極光推送(手把手教你)

源文件出處
程胖出品——極光推送(手把手教你啊)

iOS開發中不可避免要使用到推送,JPush還是個不錯的選擇。本文主要介紹極光推送的過程。
寫在前面:極光推送本身也有教程,網上也有好多大牛總結,為什么我還要寫這篇呢?不知道大家是否有這樣的感覺:每次接觸一個新東西,如果有那么一兩步沒有寫,可能就無法成功!反正這次的激光推送,有那么一兩步讓我吃了點苦頭,而為什么有這一兩步呢?因為大牛們都覺得太簡單不需要!!!

鑒于我吃了苦頭,所以本篇文章準備把每一塊的每個步驟都盡量詳細,盡量能夠一次上手就可成功。
準備事項:
蘋果開發者賬號。是要交過99美金的。如果沒有賬號或者沒有交過錢,可以參考這篇博客:AppStrore企業開發者賬號完整申請流程。
極光平臺賬號。像其他平臺一樣,需要注冊一個賬號,點我注冊賬號。
一個Xcode工程。
需要測試機一部。
瀏覽器一個,方便隨時查詢信息。

整個步驟過程如下:

  1. 設置并下載證書,包括:
    1.1 真機調試的測試證書1.2 綁定Bundle Identifier1.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.1 進入蘋果開發者中心
    1.1.2 輸入賬號和密碼

    1.1.2 輸入賬號和密碼
    1.1.3 點擊Certificates & Profiles

    1.1.3 選擇創建證書
    1.1.4 選擇創建測試證書


    1.1.4 選擇創建測試證書
    1.1.5 選擇并創建
    粘貼的圖像1148x1061 219 KB

    1.1.5 選擇并創建
    1.1.6 選擇測試證書


    1.1.6 選擇測試證書.png
    1.1.7 提示創建一個證書請求文件


    1.1.7 提示創建一個證書請求文件
    1.1.8 打開鑰匙串


    1.1.8 打開鑰匙串
    1.1.9 從證書頒發機構請求證書


    1.1.9 從證書頒發機構請求證書
    1.1.10 填寫郵箱和選存到磁盤


    1.1.10 填寫郵箱和選存到磁盤
    1.1.11 找到我們創建的證書請求文件


    1.1.11 找到我們創建的證書請求文件
    1.1.12 選擇請求文件后繼續下一步


    1.1.12 選擇請求文件后繼續下一步
    1.1.13 下載測試證書


    1.1.13 下載測試證書
    1.2 綁定Bundle Identifier
    1.2.1 新綁定Bundle Identifier


    1.2.1 新綁定Bundle Identifier
    1.2.2 打開工程找到Bundle Identifier


    1.2.2 打開工程找到Bundle Identifier
    1.2.3 填寫Bundle Identifier
    粘貼的圖像1148x1061 179 KB

    1.2.3填寫Bundle Identifier
    1.2.4 給項目開啟推送


    1.2.4 給項目開啟推送
    1.2.5 查看證書狀態(黃色)


    1.2.5 查看證書狀態(黃色)
    1.3 生成開發的推送cer證書
    1.3.1 開始創建開發推送證書


    1.3.1 開始創建開發推送證書
    1.3.2 開發和生產推送證書


    1.3.2 開發和生產推送證書
    1.3.3 選擇Bundle Identifier


    1.3.3 選擇Bundle Identifier
    1.3.4 選擇CSR證書請求文件


    1.3.4 選擇CSR證書請求文件
    1.3.5 選擇好CSR


    1.3.4 選擇CSR證書請求文件
    1.3.6 下載開發推送證書


    1.3.6 下載開發推送證書
    1.3.7 已經可以進行推送測試


    1.3.7 已經可以進行測試推送
    1.4 生成開發所需的P12證書
    1.4.1 雙擊開發推送證書


    1.4.1 雙擊開發推送證書
    1.4.2 右擊多出的證書


    1.4.2 右擊多出的證書
    1.4.3 右鍵并導出


    1.4.3 右鍵并導出
    1.4.4 存儲


    1.4.4 存儲
    1.4.5 設置生產P12證書的密碼
    1.4.5 設置生產P12證書的密碼
    1.4.6 輸入開機密碼
    1.4.6 輸入開機密碼
    1.5 生成生產cer證書
    1.5.1 開始創建生產推送證書


    1.5.1 開始創建生產推送證書
    1.5.2 選擇生產推送證書


    1.5.2 選擇生產推送證書
    1.5.3 提示選擇CSR


    1.5.3 提示選擇CSR
    1.5.4 選定CSR證書請求文件


    1.5.4 選定CSR證書請求文件
    1.5.5 下載生產證書


    1.5.5 下載生產證書
    1.5.6 兩個證書都配置完畢


    1.5.6 兩個證書都配置完畢
    1.6 生成生產所需的P12證書
    1.6.1 雙擊生產推送證書


    1.6.1 雙擊生產推送證書
    1.6.2 右擊多出的證書


    1.6.2 右擊多出的證書
    1.6.3 右鍵并導出.png


    1.6.3 右鍵并導出.png
    1.6.4 存儲


    1.6.4 存儲
    1.6.5 設置生產P12證書的密碼
    1.6.5 設置生產P12證書的密碼
    1.6.6 輸入開機密碼
    1.6.6 輸入開機密碼
    1.7 生成Provisioning Profile配置文件
    1.7.1 開始生成配置文件


    1.7.1 開始生成配置文件
    1.7.2 選擇


    1.7.2 選擇
    1.7.3 選擇Bundle Identifier


    1.7.3 選擇Bundle Identifier
    1.7.4 選擇真機調試證書


    1.7.4 選擇真機調試證書
    1.7.5 創建Devices(需要注意的是如果在創建Provisioning Prifile文件之前沒有創建調試設備的話,這里接著創建的話,創建完成的時候需要從1.7.1開始重來到1.7.4的步驟。當然,如果第一次操作,肯定是這樣的順序,我沒單獨分一個模塊,就是想讓后來者也能經歷一下這個順序)


    1.7.5 創建Devices
    1.7.6 填寫調試設備的Name和UDID


    1.7.6 填寫調試設備的Name和UDID
    1.7.7 獲取設備的UDID

    1.7.7 獲取設備的UDID
    1.7.8 接著1.7.4選擇新創建的調試設備
    1.7.8 接著1.7.4選擇新創建的調試設備
    1.7.9 給配置文件起個名字


    1.7.9 給配置文件起個名字
    1.7.10 下載配置好的配置文件


    1.7.10 下載配置好的配置文件
    (阿西吧,該死的證書終于整理完畢,累死
    :baby:
    :baby:
    寶寶了)
    2.配置項目,包括:
    2.1 極光推送上創建應用
    2.1.1 登錄極光賬號


    2.1.1 登錄極光賬號
    2.1.2 創建一個應用


    2.1.2 創建一個應用
    2.1.3 上傳P12證書


    2.1.3 上傳P12證書
    2.1.4 創建成功
    2.1.4 創建成功
    2.2 下載SDK,導入到Xcode的項目中
    2.2.1 下載JPushSDK


    2.2.1 下載JPushSDK
    2.2.2 將SDK導入到項目中


    2.2.2 將SDK導入到項目中
    2.3 導入必要框架
    2.3.1 開始添加框架


    2.3.1 開始添加框架
    2.3.2 添加完畢


    2.3.2 添加完畢
    2.4 配置PushConfig.plist文件
    2.4.1 創建新的文件


    2.4.1 創建新的文件
    2.4.2 選擇Property List,并命名為Push Config


    2.4.2 選擇Property List
    2.4.3 配置三條信息


    2.4.3 配置三條信息
    在你的工程中創建一個新的Property List文件,并將其命名為PushConfig.plist,文件所含字段如下:CHANNEL指明應用程序包的下載渠道,為方便分渠道統計,具體值由你自行定義,如:App Store。
    APP_KEY填寫管理Portal上創建應用1后自動生成的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.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 *)applicationdidFinishLaunchingWithOptions:(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 *)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(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.1 雙擊PP證書
2.7.2 同意加入到iPhone配置實用工具


2.7.2 同意加入到iPhone配置實用工具
2.7.3 設置Code Signing


2.7.3 設置Code Signing
3.極光推送平臺發送通知
3.1 應用在后臺的情況下發送通知
3.1.1 登錄極光平臺


3.1.1 登錄極光平臺
3.1.2 點擊通知


3.1.2 點擊通知
3.1.3 輸入內容發送通知


3.1.3 輸入內容發送通知
3.1.4 通知結果


3.1.4 通知結果
3.2 使用第三方在應用active狀態下獲取通知
這個使用的是標哥的處理方法,傳送門.標哥講的很好,我就不畫蛇添足了。3.2.1 active通知顯示


3.2.1 active通知顯示
整個過程真心不易,轉載請注明出處2.用到的鏈接:
iOS SDK教程
iOS SDK集成指南
JPushSDK下載

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容

  • iOS開發中不可避免要使用到推送,JPush還是個不錯的選擇。本文主要介紹極光推送的過程。 寫在前面:極光推送本身...
    胖子程閱讀 3,522評論 66 110
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,823評論 18 139
  • 不同版本極光推送SDK集成各有差異,集成時一定要注意版本號,樓主已將博文更新成最新的SDK JPush v3.0....
    i順頌時宜閱讀 7,887評論 37 170
  • 推送技術產生場景: --服務器端主動性: 客戶端與服務器交互都是客戶端主動的, 服務器一般不能主動與客戶端進行數據...
    原軍鋒閱讀 34,753評論 4 60
  • 恨的牙癢癢的時候,到底在恨什么? 因為不愿意承認自己并沒有做愛自己的舉動,而是把人生推到別人的手中:別人為我負責,...
    啟元讀書會閱讀 225評論 0 0