一.首先進入極光官網
1.注冊一個號
2.建一個你自己對應的項目,然后獲取Appkey
填寫你的Boundle id (這個就是你xcode里面plist那里)
3然后我們要上傳這兩個p12文件才能實現推送這個功能(下面第二步我們就去蘋果開發者中心去生成)
二 生成開發證書和生產證書()
1.(https://idmsa.apple.com/IDMSWebAuth/login?appIdKey=891bd3417a7776362562d2197f89480a8547b108fd934911bcbea0110d07f757&path=%2Faccount%2F&rv=1)這是跳到開發者中心的鏈接,輸入你公司的賬號密碼。登錄
然后點擊App IDs進入App ID列表。
然后選擇這個
添加你的id
然后就選擇和填這幾個選項
1.1*(這里的名字你可以選擇你自己喜歡的填寫)
![53[HFA(PT({`8``[])O4IS.png
最后在 continue
2.現在進入正題開始生成開發和生產證書了
這里的開發證書和生產證書兩個選項只能選擇一個(當你選擇生成的是開發證書的時候就選擇開發證書,反之你就選擇生產證書)
這里點擊鑰匙那里然后就可以這里了
繼續返回Apple developer 網站點擊 Continue ,上傳剛剛生成的 .certSigningRequest 文件生成 APNs Push Certificate。
下載并雙擊打開證書,證書打開時會啟動“鑰匙串訪問”工具。
在“鑰匙串訪問”中你的證書會顯示在“我的證書”中,注意選擇“My Certificates” 和"login"
注意要選“login”和“My Certificates” 導出證書時要選中證書文件,不要展開private key。(這里可能第一次按右鍵不會出現導出證書這個選項,多點幾次就會出來)
將文件保存為Personal Information Exchange (.p12)格式。
就搞定了,這里的步驟你要做兩次,一次是生成開發證書p12,一次是生成生產證書p12。然后你再回到極光推送那里把這兩個對應上傳上去密碼也輸入上去就搞定了。
最后極光和蘋果官方這兩塊搞定了,最后導入到xcode那里就搞定了。
導入SDK
選擇1:Cocoapods導入(如何沒有安裝cocoapods的,看看這篇文章http://www.lxweimin.com/p/a1709c1d292d)
通過Cocoapods下載地址:
pod 'JPush'
如何你是swift
把下面這個粘貼到橋文件上
import "JPUSHService.h"
oc自己聲明弄到appdelegate上
然后開網
info.plist 中添加如下配置以支持 http 傳輸。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
把這里幾個選項勾選了
最后來粘貼代碼
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication,
didFinishLaunchingWithOptions
launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//通知類型(這里將聲音、消息、提醒角標都給加上)
let userSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound],
categories: nil)
if ((UIDevice.current.systemVersion as NSString).floatValue >= 8.0) {
//可以添加自定義categories
JPUSHService.register(forRemoteNotificationTypes: userSettings.types.rawValue,
categories: nil)
}
else {
//categories 必須為nil
JPUSHService.register(forRemoteNotificationTypes: userSettings.types.rawValue,
categories: nil)
}
// 啟動JPushSDK
JPUSHService.setup(withOption: nil, appKey: "7b528331738ec719195798fd",
channel: "Publish Channel", apsForProduction:true)
return true
}
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
//注冊 DeviceToken
JPUSHService.registerDeviceToken(deviceToken)
}
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any],
fetchCompletionHandler
completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
//增加IOS 7的支持
JPUSHService.handleRemoteNotification(userInfo)
completionHandler(UIBackgroundFetchResult.newData)
}
func application(_ application: UIApplication,
didFailToRegisterForRemoteNotificationsWithError error: Error) {
//可選
NSLog("did Fail To Register For Remote Notifications With Error: \(error)")
}
//..........
}
JPUSHService.setupWithOption()方法的參數說明:
channel
指明應用程序包的下載渠道,為方便分渠道統計,具體值由你自行定義,如:App Store。
appKey
填寫管理Portal上創建應用后自動生成的AppKey值。請確保應用內配置的 AppKey 與第1步在 Portal 上創建應用后生成的 AppKey 一致。
apsForProduction
1.3.1版本新增,用于標識當前應用所使用的APNs證書環境。
0 (默認值)表示采用的是開發證書,1 表示采用生產證書發布應用。
注:此字段的值要與Build Settings的Code Signing配置的證書環境一致。
最后我們來玩一波 (注意只能真機測試,模擬器不行)
![@TM3I_~KV(7GKOG3Y)_W_9.jpg
如果后臺打印了這些證書成功了
3,將程序退出。接著我們到極光推送網站上的控制臺模塊來進行消息發送的測試。
在“推送”->“發送通知”頁面中,輸入需要推送的消息及相關配置(這里我們選擇廣播,即給所有人都發生推送)。點擊“立即發送”。
搞定解決。
總結:
1.apple.develop中的所有證書可以刪除重新制作,對已上線的應用不會有影響
2.似乎生產環境下所有的設置好不能直接在真機上測試,需要打包ipa文件提交到iTunes上同步安裝到手機上測試。這相當于模擬真實用戶的操作,很實用。