iOS開發(fā)中不可避免要使用到推送赊豌,JPush還是個(gè)不錯(cuò)的選擇。本文主要介紹極光推送的過程瓤湘。
寫在前面:極光推送本身也有教程瓢颅,網(wǎng)上也有好多大牛總結(jié)弛说,為什么我還要寫這篇呢挽懦?不知道大家是否有這樣的感覺:每次接觸一個(gè)新東西,如果有那么一兩步?jīng)]有寫木人,可能就無法成功信柿!反正這次的激光推送,有那么一兩步讓我吃了點(diǎn)苦頭醒第,而為什么有這一兩步呢渔嚷?因?yàn)榇笈兌加X得太簡單不需要!3砺形病!
鑒于我吃了苦頭,所以本篇文章準(zhǔn)備把每一塊的每個(gè)步驟都盡量詳細(xì),盡量能夠一次上手就可成功漠吻。
準(zhǔn)備事項(xiàng):
1.蘋果開發(fā)者賬號量瓜。是要交過99美金的。如果沒有賬號或者沒有交過錢途乃,可以參考這篇博客:AppStrore企業(yè)開發(fā)者賬號完整申請流程榔至。
2.極光平臺賬號。像其他平臺一樣欺劳,需要注冊一個(gè)賬號唧取,點(diǎn)我注冊賬號。
3.一個(gè)Xcode工程划提。
4.需要測試機(jī)一部枫弟。
5.瀏覽器一個(gè),方便隨時(shí)查詢信息鹏往。
整個(gè)步驟過程如下:
1.設(shè)置并下載證書淡诗,包括:
1.1 真機(jī)調(diào)試的測試證書
1.2 綁定Bundle Identifier
1.3 生成開發(fā)的推送cer證書
1.4 生成開發(fā)所需的P12證書
1.5 生成生產(chǎn)cer證書
1.6 生成生產(chǎn)所需的P12證書
1.7 Provisioning Profile配置文件
2.配置項(xiàng)目,包括:
2.1 極光推送上創(chuàng)建應(yīng)用
2.2 下載SDK伊履,導(dǎo)入到Xcode的項(xiàng)目中
2.3 導(dǎo)入必要框架
2.4 配置PushConfig.plist文件
2.5 Xcode7支持http傳輸?shù)姆椒?/h6>
2.6 調(diào)試代碼設(shè)置
3.極光推送平臺發(fā)送通知
3.1 應(yīng)用在后臺的情況下發(fā)送通知
3.2 使用第三方在應(yīng)用active狀態(tài)下獲取通知
=----------------------------------------=
1.設(shè)置并下載證書韩容,包括:
1.1 真機(jī)調(diào)試的測試證書
首先登錄蘋果開發(fā)者網(wǎng)站,按照下圖步驟走:
1.1.1 進(jìn)入蘋果開發(fā)者中心
1.1.2 輸入賬號和密碼
1.1.3 點(diǎn)擊Certificates & Profiles
1.1.4 選擇創(chuàng)建測試證書
1.1.5 選擇并創(chuàng)建
1.1.6 選擇測試證書
1.1.7 提示創(chuàng)建一個(gè)證書請求文件
1.1.8 打開鑰匙串
1.1.9 從證書頒發(fā)機(jī)構(gòu)請求證書
1.1.10 填寫郵箱和選存到磁盤
1.1.11 找到我們創(chuàng)建的證書請求文件
1.1.12 選擇請求文件后繼續(xù)下一步
1.1.13 下載測試證書
1.2 綁定Bundle Identifier
1.2.1 新綁定Bundle Identifier
1.2.2 打開工程找到Bundle Identifier
1.2.3 填寫B(tài)undle Identifier
1.2.4 給項(xiàng)目開啟推送
1.2.5 查看證書狀態(tài)(黃色)
1.3 生成開發(fā)的推送cer證書
1.3.1 開始創(chuàng)建開發(fā)推送證書
1.3.2 開發(fā)和生產(chǎn)推送證書
1.3.3 選擇Bundle Identifier
1.3.4 選擇CSR證書請求文件
1.3.5 選擇好CSR
1.3.6 下載開發(fā)推送證書
1.3.7 已經(jīng)可以進(jìn)行推送測試
1.4 生成開發(fā)所需的P12證書
1.4.1 雙擊開發(fā)推送證書
1.4.2 右擊多出的證書
1.4.3 右鍵并導(dǎo)出
1.4.4 存儲(chǔ)
1.4.5 設(shè)置生產(chǎn)P12證書的密碼
1.4.6 輸入開機(jī)密碼
1.5 生成生產(chǎn)cer證書
1.5.1 開始創(chuàng)建生產(chǎn)推送證書
1.5.2 選擇生產(chǎn)推送證書
1.5.3 提示選擇CSR
1.5.4 選定CSR證書請求文件
1.5.5 下載生產(chǎn)證書
1.5.6 兩個(gè)證書都配置完畢
1.6 生成生產(chǎn)所需的P12證書
1.6.1 雙擊生產(chǎn)推送證書
1.6.2 右擊多出的證書
1.6.3 右鍵并導(dǎo)出.png
1.6.4 存儲(chǔ)
1.6.5 設(shè)置生產(chǎn)P12證書的密碼
1.6.6 輸入開機(jī)密碼
1.7 生成Provisioning Profile配置文件
1.7.1 開始生成配置文件
1.7.2 選擇
1.7.3 選擇Bundle Identifier
1.7.4 選擇真機(jī)調(diào)試證書
1.7.5 創(chuàng)建Devices(需要注意的是如果在創(chuàng)建Provisioning Prifile文件之前沒有創(chuàng)建調(diào)試設(shè)備的話先口,這里接著創(chuàng)建的話蚁阳,創(chuàng)建完成的時(shí)候需要從1.7.1開始重來到1.7.4的步驟。當(dāng)然炼彪,如果第一次操作哄辣,肯定是這樣的順序请梢,我沒單獨(dú)分一個(gè)模塊,就是想讓后來者也能經(jīng)歷一下這個(gè)順序)
1.7.6 填寫調(diào)試設(shè)備的Name和UDID
1.7.7 獲取設(shè)備的UDID
1.7.8 接著1.7.4選擇新創(chuàng)建的調(diào)試設(shè)備
1.7.9 給配置文件起個(gè)名字
1.7.10 下載配置好的配置文件
(阿西吧力穗,該死的證書終于整理完畢毅弧,累死??寶寶了)
2.配置項(xiàng)目,包括:
2.1 極光推送上創(chuàng)建應(yīng)用
2.1.1 登錄極光賬號
2.1.2 創(chuàng)建一個(gè)應(yīng)用
2.1.3 上傳P12證書
2.1.4 創(chuàng)建成功
2.2 下載SDK当窗,導(dǎo)入到Xcode的項(xiàng)目中
2.2.1 下載JPushSDK
2.2.2 將SDK導(dǎo)入到項(xiàng)目中
2.3 導(dǎo)入必要框架
2.3.1 開始添加框架
2.3.2 添加完畢
2.4 配置PushConfig.plist文件
2.4.1 創(chuàng)建新的文件
2.4.2 選擇Property List够坐,并命名為Push Config
2.4.3 配置三條信息
在你的工程中創(chuàng)建一個(gè)新的Property List文件,并將其命名為PushConfig.plist崖面,文件所含字段如下:
CHANNEL指明應(yīng)用程序包的下載渠道元咙,為方便分渠道統(tǒng)計(jì),具體值由你自行定義嘶朱,如:App Store蛾坯。
APP_KEY填寫管理Portal上創(chuàng)建應(yīng)用后自動(dòng)生成的AppKey值。請確保應(yīng)用內(nèi)配置的 AppKey 與第1步在 Portal 上創(chuàng)建應(yīng)用后生成的 AppKey 一致疏遏。
APS_FOR_PRODUCTION1.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)境一致。
在1.2.2或之前版本的配置文件中戳寸,有 TEST_MODE 這個(gè)鍵呈驶,新版的SDK不再使用,可以將它刪除疫鹊。
2.5 Xcode7支持http傳輸?shù)姆椒?/h6>
2.5.1 允許XCode7支持http傳輸
2.6 調(diào)試代碼設(shè)置
導(dǎo)入頭文件并配置信息
#import "JPUSHService.h"
static NSString *appKey = @"203bb93d6acaf565a52f3cf2";
static NSString *channel = @"App Store";
static BOOL isProduction = FALSE;
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
//Required
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
//可以添加自定義categories
[JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
UIUserNotificationTypeSound |
UIUserNotificationTypeAlert)
categories:nil];
} else {
//categories 必須為nil
[JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert)
categories:nil];
}
//Required
//如需兼容舊版本的方式袖瞻,請依舊使用[JPUSHService setupWithOption:launchOptions]方式初始化和同時(shí)使用pushConfig.plist文件聲明appKey等配置內(nèi)容。
[JPUSHService setupWithOption:launchOptions appKey:appKey
channel:channel
apsForProduction:isProduction];
return YES;
}
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
/// Required - 注冊 DeviceToken
[JPUSHService registerDeviceToken:deviceToken];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
// Required,For systems with less than or equal to iOS6
[JPUSHService handleRemoteNotification:userInfo];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
// IOS 7 Support Required
[JPUSHService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
//Optional
NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}
2.7 Xcode的配置
2.7.1 雙擊PP證書(灰常重要拆吆,如果沒有這個(gè)證書聋迎,那你要頭疼了,誰試誰知道)
2.7.2 同意加入到iPhone配置實(shí)用工具
2.7.3 設(shè)置Code Signing
3.極光推送平臺發(fā)送通知
3.1 應(yīng)用在后臺的情況下發(fā)送通知
3.1.1 登錄極光平臺
3.1.2 點(diǎn)擊通知
3.1.3 輸入內(nèi)容發(fā)送通知
3.14 通知結(jié)果
3.2 使用第三方在應(yīng)用active狀態(tài)下獲取通知
這個(gè)使用的是標(biāo)哥的處理方法枣耀,傳送門.標(biāo)哥講的很好霉晕,我就不畫蛇添足了。
3.2.1 active通知顯示
整個(gè)過程真心不易捞奕,轉(zhuǎn)載請注明出處.
用到的鏈接:
iOS SDK教程
iOS SDK集成指南
JPushSDK下載