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

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.1 進(jìn)入蘋果開發(fā)者中心

1.1.2 輸入賬號和密碼
1.1.2 輸入賬號和密碼

1.1.3 點(diǎn)擊Certificates & Profiles
1.1.3 選擇創(chuàng)建證書

1.1.4 選擇創(chuàng)建測試證書
1.1.4 選擇創(chuàng)建測試證書

1.1.5 選擇并創(chuàng)建
1.1.5 選擇并創(chuàng)建

1.1.6 選擇測試證書
1.1.6 選擇測試證書.png

1.1.7 提示創(chuàng)建一個(gè)證書請求文件
1.1.7 提示創(chuàng)建一個(gè)證書請求文件

1.1.8 打開鑰匙串
1.1.8 打開鑰匙串

1.1.9 從證書頒發(fā)機(jī)構(gòu)請求證書
1.1.9 從證書頒發(fā)機(jī)構(gòu)請求證書

1.1.10 填寫郵箱和選存到磁盤
1.1.10 填寫郵箱和選存到磁盤

1.1.11 找到我們創(chuàng)建的證書請求文件
1.1.11 找到我們創(chuàng)建的證書請求文件

1.1.12 選擇請求文件后繼續(xù)下一步
1.1.12 選擇請求文件后繼續(xù)下一步

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 填寫B(tài)undle Identifier
1.2.3 填寫B(tài)undle Identifier

1.2.4 給項(xiàng)目開啟推送


1.2.4 給項(xiàng)目開啟推送

1.2.5 查看證書狀態(tài)(黃色)
1.2.5 查看證書狀態(tài)(黃色)
1.3 生成開發(fā)的推送cer證書

1.3.1 開始創(chuàng)建開發(fā)推送證書


1.3.1 開始創(chuàng)建開發(fā)推送證書

1.3.2 開發(fā)和生產(chǎn)推送證書


1.3.2 開發(fā)和生產(chǎn)推送證書

1.3.3 選擇Bundle Identifier
1.3.3 選擇Bundle Identifier

1.3.4 選擇CSR證書請求文件


1.3.4 選擇CSR證書請求文件

1.3.5 選擇好CSR
1.3.5 選擇好CSR

1.3.6 下載開發(fā)推送證書
1.3.6 下載開發(fā)推送證書

1.3.7 已經(jīng)可以進(jìn)行推送測試
1.3.7 已經(jīng)可以進(jìn)行測試推送
1.4 生成開發(fā)所需的P12證書

1.4.1 雙擊開發(fā)推送證書


1.4.1 雙擊開發(fā)推送證書

1.4.2 右擊多出的證書


1.4.2 右擊多出的證書

1.4.3 右鍵并導(dǎo)出
1.4.3 右鍵并導(dǎo)出

1.4.4 存儲(chǔ)


1.4.4 存儲(chǔ)

1.4.5 設(shè)置生產(chǎn)P12證書的密碼
1.4.5 設(shè)置生產(chǎn)P12證書的密碼

1.4.6 輸入開機(jī)密碼
1.4.6 輸入開機(jī)密碼
1.5 生成生產(chǎn)cer證書

1.5.1 開始創(chuàng)建生產(chǎn)推送證書


1.5.1 開始創(chuàng)建生產(chǎn)推送證書

1.5.2 選擇生產(chǎn)推送證書


1.5.2 選擇生產(chǎn)推送證書

1.5.3 提示選擇CSR
1.5.3 提示選擇CSR

1.5.4 選定CSR證書請求文件


1.5.4 選定CSR證書請求文件

1.5.5 下載生產(chǎn)證書
1.5.5 下載生產(chǎn)證書

1.5.6 兩個(gè)證書都配置完畢
1.5.6 兩個(gè)證書都配置完畢
1.6 生成生產(chǎn)所需的P12證書

1.6.1 雙擊生產(chǎn)推送證書


1.6.1 雙擊生產(chǎn)推送證書

1.6.2 右擊多出的證書


1.6.2 右擊多出的證書

1.6.3 右鍵并導(dǎo)出.png
1.6.3 右鍵并導(dǎo)出.png

1.6.4 存儲(chǔ)


1.6.4 存儲(chǔ)

1.6.5 設(shè)置生產(chǎn)P12證書的密碼
1.6.5 設(shè)置生產(chǎn)P12證書的密碼

1.6.6 輸入開機(jī)密碼
1.6.6 輸入開機(jī)密碼
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 選擇真機(jī)調(diào)試證書


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.5 創(chuàng)建Devices

1.7.6 填寫調(diào)試設(shè)備的Name和UDID
1.7.6 填寫調(diào)試設(shè)備的Name和UDID

1.7.7 獲取設(shè)備的UDID
1.7.7 獲取設(shè)備的UDID

1.7.8 接著1.7.4選擇新創(chuàng)建的調(diào)試設(shè)備
1.7.8 接著1.7.4選擇新創(chuàng)建的調(diào)試設(shè)備

1.7.9 給配置文件起個(gè)名字


1.7.9 給配置文件起個(gè)名字

1.7.10 下載配置好的配置文件
1.7.10 下載配置好的配置文件

(阿西吧力穗,該死的證書終于整理完畢毅弧,累死??寶寶了)
2.配置項(xiàng)目,包括:
2.1 極光推送上創(chuàng)建應(yīng)用

2.1.1 登錄極光賬號


2.1.1 登錄極光賬號

2.1.2 創(chuàng)建一個(gè)應(yīng)用


2.1.2 創(chuàng)建一個(gè)應(yīng)用

2.1.3 上傳P12證書
2.1.3 上傳P12證書

2.1.4 創(chuàng)建成功


2.1.4 創(chuàng)建成功
2.2 下載SDK当窗,導(dǎo)入到Xcode的項(xiàng)目中

2.2.1 下載JPushSDK


2.2.1 下載JPushSDK

2.2.2 將SDK導(dǎo)入到項(xiàng)目中


2.2.2 將SDK導(dǎo)入到項(xiàng)目中
2.3 導(dǎo)入必要框架

2.3.1 開始添加框架


2.3.1 開始添加框架

2.3.2 添加完畢


2.3.2 添加完畢
2.4 配置PushConfig.plist文件

2.4.1 創(chuàng)建新的文件


2.4.1 創(chuàng)建新的文件

2.4.2 選擇Property List够坐,并命名為Push Config


2.4.2 選擇Property List

2.4.3 配置三條信息
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.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.1 雙擊PP證書

2.7.2 同意加入到iPhone配置實(shí)用工具


2.7.2 同意加入到iPhone配置實(shí)用工具

2.7.3 設(shè)置Code Signing
2.7.3 設(shè)置Code Signing
3.極光推送平臺發(fā)送通知
3.1 應(yīng)用在后臺的情況下發(fā)送通知

3.1.1 登錄極光平臺


3.1.1 登錄極光平臺

3.1.2 點(diǎn)擊通知


3.1.2 點(diǎn)擊通知

3.1.3 輸入內(nèi)容發(fā)送通知
3.1.3 輸入內(nèi)容發(fā)送通知

3.14 通知結(jié)果


3.14 通知結(jié)果
3.2 使用第三方在應(yīng)用active狀態(tài)下獲取通知

這個(gè)使用的是標(biāo)哥的處理方法枣耀,傳送門.標(biāo)哥講的很好霉晕,我就不畫蛇添足了。
3.2.1 active通知顯示

3.2.1 active通知顯示

整個(gè)過程真心不易捞奕,轉(zhuǎn)載請注明出處.
用到的鏈接:
iOS SDK教程
iOS SDK集成指南
JPushSDK下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牺堰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颅围,更是在濱河造成了極大的恐慌伟葫,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件院促,死亡現(xiàn)場離奇詭異扒俯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)一疯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門撼玄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人墩邀,你說我怎么就攤上這事掌猛。” “怎么了眉睹?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵荔茬,是天一觀的道長。 經(jīng)常有香客問我竹海,道長慕蔚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任斋配,我火速辦了婚禮孔飒,結(jié)果婚禮上灌闺,老公的妹妹穿的比我還像新娘。我一直安慰自己坏瞄,他們只是感情好桂对,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸠匀,像睡著了一般蕉斜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缀棍,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天宅此,我揣著相機(jī)與錄音,去河邊找鬼爬范。 笑死父腕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坦敌。 我是一名探鬼主播侣诵,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狱窘!你這毒婦竟也來了杜顺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蘸炸,失蹤者是張志新(化名)和其女友劉穎躬络,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搭儒,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡穷当,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淹禾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馁菜。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖铃岔,靈堂內(nèi)的尸體忽然破棺而出汪疮,到底是詐尸還是另有隱情,我是刑警寧澤毁习,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布智嚷,位于F島的核電站,受9級特大地震影響纺且,放射性物質(zhì)發(fā)生泄漏盏道。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一载碌、第九天 我趴在偏房一處隱蔽的房頂上張望猜嘱。 院中可真熱鬧衅枫,春花似錦、人聲如沸泉坐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腕让。三九已至,卻和暖如春歧斟,著一層夾襖步出監(jiān)牢的瞬間纯丸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工静袖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留觉鼻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓队橙,卻偏偏與公主長得像坠陈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子捐康,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 源文件出處程胖出品——極光推送(手把手教你啊) iOS開發(fā)中不可避免要使用到推送仇矾,JPush還是個(gè)不錯(cuò)的選擇。本文...
    hx永恒之戀閱讀 7,111評論 9 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理解总,服務(wù)發(fā)現(xiàn)贮匕,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 不同版本極光推送SDK集成各有差異花枫,集成時(shí)一定要注意版本號刻盐,樓主已將博文更新成最新的SDK JPush v3.0....
    i順頌時(shí)宜閱讀 7,862評論 37 170
  • 前言 iOS10下,遠(yuǎn)程推送發(fā)生了變化劳翰,新增的UserNotifications.framework將本地推送和遠(yuǎn)...
    夭Y夭閱讀 1,127評論 2 10
  • ** Tips:** 不同版本極光推送SDK集成各有差異敦锌,各位童鞋在集成時(shí)一定要注意版本號,本人集成的是基于 極光...
    anyurchao閱讀 2,418評論 3 26