一.首先進(jìn)入極光官網(wǎng)
1.注冊一個號
2.建一個你自己對應(yīng)的項目卡儒,然后獲取Appkey
填寫你的Boundle id (這個就是你xcode里面plist那里)
3然后我們要上傳這兩個p12文件才能實(shí)現(xiàn)推送這個功能(下面第二步我們就去蘋果開發(fā)者中心去生成)
二 生成開發(fā)證書和生產(chǎn)證書()
1.(https://idmsa.apple.com/IDMSWebAuth/login?appIdKey=891bd3417a7776362562d2197f89480a8547b108fd934911bcbea0110d07f757&path=%2Faccount%2F&rv=1)這是跳到開發(fā)者中心的鏈接啤呼,輸入你公司的賬號密碼。登錄
然后點(diǎn)擊App IDs進(jìn)入App ID列表。
然后選擇這個
添加你的id
然后就選擇和填這幾個選項
1.1*(這里的名字你可以選擇你自己喜歡的填寫)
![53[HFA(PT({`8``[])O4IS.png
最后在 continue
2.現(xiàn)在進(jìn)入正題開始生成開發(fā)和生產(chǎn)證書了
這里的開發(fā)證書和生產(chǎn)證書兩個選項只能選擇一個(當(dāng)你選擇生成的是開發(fā)證書的時候就選擇開發(fā)證書枪萄,反之你就選擇生產(chǎn)證書)
這里點(diǎn)擊鑰匙那里然后就可以這里了
繼續(xù)返回Apple developer 網(wǎng)站點(diǎn)擊 Continue ,上傳剛剛生成的 .certSigningRequest 文件生成 APNs Push Certificate。
下載并雙擊打開證書嗓违,證書打開時會啟動“鑰匙串訪問”工具。
在“鑰匙串訪問”中你的證書會顯示在“我的證書”中图贸,注意選擇“My Certificates” 和"login"
注意要選“l(fā)ogin”和“My Certificates” 導(dǎo)出證書時要選中證書文件蹂季,不要展開private key。(這里可能第一次按右鍵不會出現(xiàn)導(dǎo)出證書這個選項疏日,多點(diǎn)幾次就會出來)
將文件保存為Personal Information Exchange (.p12)格式偿洁。
就搞定了,這里的步驟你要做兩次沟优,一次是生成開發(fā)證書p12涕滋,一次是生成生產(chǎn)證書p12。然后你再回到極光推送那里把這兩個對應(yīng)上傳上去密碼也輸入上去就搞定了挠阁。
最后極光和蘋果官方這兩塊搞定了宾肺,最后導(dǎo)入到xcode那里就搞定了。
導(dǎo)入SDK
選擇1:Cocoapods導(dǎo)入(如何沒有安裝cocoapods的侵俗,看看這篇文章http://www.reibang.com/p/a1709c1d292d)
通過Cocoapods下載地址:
pod 'JPush'
如何你是swift
把下面這個粘貼到橋文件上
import "JPUSHService.h"
oc自己聲明弄到appdelegate上
然后開網(wǎng)
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 {
//通知類型(這里將聲音、消息坡慌、提醒角標(biāo)都給加上)
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()方法的參數(shù)說明:
channel
指明應(yīng)用程序包的下載渠道黔酥,為方便分渠道統(tǒng)計,具體值由你自行定義,如:App Store跪者。
appKey
填寫管理Portal上創(chuàng)建應(yīng)用后自動生成的AppKey值棵帽。請確保應(yīng)用內(nèi)配置的 AppKey 與第1步在 Portal 上創(chuàng)建應(yīng)用后生成的 AppKey 一致。
apsForProduction
1.3.1版本新增渣玲,用于標(biāo)識當(dāng)前應(yīng)用所使用的APNs證書環(huán)境逗概。
0 (默認(rèn)值)表示采用的是開發(fā)證書,1 表示采用生產(chǎn)證書發(fā)布應(yīng)用忘衍。
注:此字段的值要與Build Settings的Code Signing配置的證書環(huán)境一致逾苫。
最后我們來玩一波 (注意只能真機(jī)測試,模擬器不行)
![@TM3I_~KV(7GKOG3Y)_W_9.jpg
如果后臺打印了這些證書成功了
3枚钓,將程序退出铅搓。接著我們到極光推送網(wǎng)站上的控制臺模塊來進(jìn)行消息發(fā)送的測試。
在“推送”->“發(fā)送通知”頁面中搀捷,輸入需要推送的消息及相關(guān)配置(這里我們選擇廣播星掰,即給所有人都發(fā)生推送)。點(diǎn)擊“立即發(fā)送”嫩舟。
搞定解決氢烘。
總結(jié):
1.apple.develop中的所有證書可以刪除重新制作,對已上線的應(yīng)用不會有影響
2.似乎生產(chǎn)環(huán)境下所有的設(shè)置好不能直接在真機(jī)上測試家厌,需要打包ipa文件提交到iTunes上同步安裝到手機(jī)上測試播玖。這相當(dāng)于模擬真實(shí)用戶的操作,很實(shí)用饭于。