iOS開發中不可避免要使用到推送,JPush還是個不錯的選擇。本文主要介紹極光推送的過程。
寫在前面:極光推送本身也有教程,網上也有好多大牛總結,為什么我還要寫這篇呢?不知道大家是否有這樣的感覺:每次接觸一個新東西,如果有那么一兩步沒有寫,可能就無法成功!反正這次的激光推送,有那么一兩步讓我吃了點苦頭,而為什么有這一兩步呢?因為大牛們都覺得太簡單不需要!??!
鑒于我吃了苦頭,所以本篇文章準備把每一塊的每個步驟都盡量詳細,盡量能夠一次上手就可成功。
準備事項:
1.蘋果開發者賬號。是要交過99美金的。如果沒有賬號或者沒有交過錢,可以參考這篇博客:AppStrore企業開發者賬號完整申請流程。
2.極光平臺賬號。像其他平臺一樣,需要注冊一個賬號,點我注冊賬號。
3.一個Xcode工程。
4.需要測試機一部。
5.瀏覽器一個,方便隨時查詢信息。
整個步驟過程如下:
1.設置并下載證書,包括:
1.1 真機調試的測試證書
1.2 綁定Bundle Identifier
1.3 生成開發的推送cer證書
1.4 生成開發所需的P12證書
1.5 生成生產cer證書
1.6 生成生產所需的P12證書
1.7 Provisioning Profile配置文件
2.配置項目,包括:
2.1 極光推送上創建應用
2.2 下載SDK,導入到Xcode的項目中
2.3 導入必要框架
2.4 配置PushConfig.plist文件
2.5 Xcode7支持http傳輸的方法
2.6 調試代碼設置
3.極光推送平臺發送通知
3.1 應用在后臺的情況下發送通知
3.2 使用第三方在應用active狀態下獲取通知
=----------------------------------------=
1.設置并下載證書,包括:
1.1 真機調試的測試證書
首先登錄蘋果開發者網站,按照下圖步驟走:
1.1.1 進入蘋果開發者中心
1.1.2 輸入賬號和密碼
1.1.3 點擊Certificates & Profiles
1.1.4 選擇創建測試證書
1.1.5 選擇并創建
1.1.6 選擇測試證書
1.1.7 提示創建一個證書請求文件
1.1.8 打開鑰匙串
1.1.9 從證書頒發機構請求證書
1.1.10 填寫郵箱和選存到磁盤
1.1.11 找到我們創建的證書請求文件
1.1.12 選擇請求文件后繼續下一步
1.1.13 下載測試證書
1.2 綁定Bundle Identifier
1.2.1 新綁定Bundle Identifier
1.2.2 打開工程找到Bundle Identifier
1.2.3 填寫Bundle Identifier
1.2.4 給項目開啟推送
1.2.5 查看證書狀態(黃色)
1.3 生成開發的推送cer證書
1.3.1 開始創建開發推送證書
1.3.2 開發和生產推送證書
1.3.3 選擇Bundle Identifier
1.3.4 選擇CSR證書請求文件
1.3.5 選擇好CSR
1.3.6 下載開發推送證書
1.3.7 已經可以進行推送測試
1.4 生成開發所需的P12證書
1.4.1 雙擊開發推送證書
1.4.2 右擊多出的證書
1.4.3 右鍵并導出
1.4.4 存儲
1.4.5 設置生產P12證書的密碼
1.4.6 輸入開機密碼
1.5 生成生產cer證書
1.5.1 開始創建生產推送證書
1.5.2 選擇生產推送證書
1.5.3 提示選擇CSR
1.5.4 選定CSR證書請求文件
1.5.5 下載生產證書
1.5.6 兩個證書都配置完畢
1.6 生成生產所需的P12證書
1.6.1 雙擊生產推送證書
1.6.2 右擊多出的證書
1.6.3 右鍵并導出.png
1.6.4 存儲
1.6.5 設置生產P12證書的密碼
1.6.6 輸入開機密碼
1.7 生成Provisioning Profile配置文件
1.7.1 開始生成配置文件
1.7.2 選擇
1.7.3 選擇Bundle Identifier
1.7.4 選擇真機調試證書
1.7.5 創建Devices(需要注意的是如果在創建Provisioning Prifile文件之前沒有創建調試設備的話,這里接著創建的話,創建完成的時候需要從1.7.1開始重來到1.7.4的步驟。當然,如果第一次操作,肯定是這樣的順序,我沒單獨分一個模塊,就是想讓后來者也能經歷一下這個順序)
1.7.6 填寫調試設備的Name和UDID
1.7.7 獲取設備的UDID
1.7.8 接著1.7.4選擇新創建的調試設備
1.7.9 給配置文件起個名字
1.7.10 下載配置好的配置文件
(阿西吧,該死的證書終于整理完畢,累死??寶寶了)
2.配置項目,包括:
2.1 極光推送上創建應用
2.1.1 登錄極光賬號
2.1.2 創建一個應用
2.1.3 上傳P12證書
2.1.4 創建成功
2.2 下載SDK,導入到Xcode的項目中
2.2.1 下載JPushSDK
2.2.2 將SDK導入到項目中
2.3 導入必要框架
2.3.1 開始添加框架
2.3.2 添加完畢
2.4 配置PushConfig.plist文件
2.4.1 創建新的文件
2.4.2 選擇Property List,并命名為Push Config
2.4.3 配置三條信息
在你的工程中創建一個新的Property List文件,并將其命名為PushConfig.plist,文件所含字段如下:
CHANNEL指明應用程序包的下載渠道,為方便分渠道統計,具體值由你自行定義,如:App Store。
APP_KEY填寫管理Portal上創建應用后自動生成的AppKey值。請確保應用內配置的 AppKey 與第1步在 Portal 上創建應用后生成的 AppKey 一致。
APS_FOR_PRODUCTION1.3.1版本新增,用于標識當前應用所使用的APNs證書環境。
0 (默認值)表示采用的是開發證書,1 表示采用生產證書發布應用。
注:此字段的值要與Build Settings的Code Signing配置的證書環境一致。
在1.2.2或之前版本的配置文件中,有 TEST_MODE 這個鍵,新版的SDK不再使用,可以將它刪除。
2.5 Xcode7支持http傳輸的方法
2.5.1 允許XCode7支持http傳輸
2.6 調試代碼設置
導入頭文件并配置信息
#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]方式初始化和同時使用pushConfig.plist文件聲明appKey等配置內容。
[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證書(灰常重要,如果沒有這個證書,那你要頭疼了,誰試誰知道)
2.7.2 同意加入到iPhone配置實用工具
2.7.3 設置Code Signing
3.極光推送平臺發送通知
3.1 應用在后臺的情況下發送通知
3.1.1 登錄極光平臺
3.1.2 點擊通知
3.1.3 輸入內容發送通知
3.14 通知結果
3.2 使用第三方在應用active狀態下獲取通知
這個使用的是標哥的處理方法,傳送門.標哥講的很好,我就不畫蛇添足了。
3.2.1 active通知顯示
整個過程真心不易,轉載請注明出處.
用到的鏈接:
iOS SDK教程
iOS SDK集成指南
JPushSDK下載