淺談iOS的消息推送

創(chuàng)建App ID

要實(shí)現(xiàn)遠(yuǎn)程推送的功能,需要我們創(chuàng)建AppID,推送證書配置等相關(guān)操作,我們首先登陸https://developer.apple.com 進(jìn)入開發(fā)者中心


點(diǎn)擊+號(hào)添加之后需要我們輸入Name和Boundle ID绘闷,那么我們自己設(shè)定 但是boundle ID 就要和我們的工程的boundle identifier要是一樣的




然后需要我們在App Serviers里面勾線Push Notification選項(xiàng)->continue->submit->done此時(shí)我們的APPID就創(chuàng)建成功了


創(chuàng)建推送證書和描述文件

由于只是測試我們選擇Developement



->



->App ID就是我們上面創(chuàng)建的App ID->點(diǎn)擊continue->continue

在Generate your certificate.頁面會(huì)提示我們上傳一個(gè)CSR文件婴削,那么怎么去生成一個(gè)CSR文件呢晦炊?



這個(gè)時(shí)候我們就需要我們的鑰匙串了璧瞬,打開鑰匙串

接下來 電子郵件地址必填 我們也可以隨便填 保存到桌面上,完成

然后我們點(diǎn)擊choose file..上傳CSR文件->continue->DownLoad下載到桌面上
接下來我們創(chuàng)建描述文件 點(diǎn)擊+創(chuàng)建

選擇開發(fā)環(huán)境->continue



選擇我們的App ID ->continue

->

->

->我們不知道具體是哪一個(gè)的話 可以選擇全部

->

->Continue然后DownLoad
到這里我們的證書和描述文件都已經(jīng)創(chuàng)建好了 我們雙擊我們的證書麻裁,在鑰匙串里面可以查看證書信息箍镜,雙擊描述文件 加到Xcode里面Build Settings->Provisioning Podfile 選擇我們的證書,code single identifier 選擇我們的開發(fā)證書

->

推送的實(shí)現(xiàn)

一個(gè)應(yīng)用程序要想實(shí)現(xiàn)推送的話 就需要注冊推送通知 遠(yuǎn)程推送 在iOS8之前和之后的注冊方式不一樣 所以要做系統(tǒng)版本適配 根據(jù)不同的iOS版本 執(zhí)行不同的注冊代碼
在APPDelegate里

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//條件編譯  // 條件編譯指令:根據(jù)判斷條件煎源,編譯不同區(qū)塊的代碼
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
    
    //1 配置遠(yuǎn)程推送收到消息后的狀態(tài):有腳標(biāo) 有聲音 有彈框
    UIUserNotificationSettings *set = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];
    
   //2 將配置添加進(jìn)遠(yuǎn)程托送的設(shè)置中
    [[UIApplication sharedApplication]registerUserNotificationSettings:set];
    
   //3 注冊遠(yuǎn)程推送
    [[UIApplication sharedApplication]registerForRemoteNotifications];
      
#else
    
    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];
    
#endif
    return YES;
}

這個(gè)時(shí)候運(yùn)行我們的程序會(huì)看到如下提示信息



此時(shí)用戶點(diǎn)擊允許之后 應(yīng)用程序會(huì)向蘋果APNS注冊色迂,獲取令牌,令牌唯一標(biāo)識(shí)當(dāng)前的設(shè)備

//遠(yuǎn)程推送注冊成功后 會(huì)執(zhí)行這個(gè)方法 通過改代理將APNS提供的DeviceToken傳進(jìn)APP 進(jìn)而由APP轉(zhuǎn)發(fā)給推送服務(wù)器

//從蘋果APNS獲取Token成功
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
    NSLog(@"遠(yuǎn)程推送能力注冊成功手销,deviceToken:%@",deviceToken);
}

//注冊失斝(獲取Token)的話會(huì)執(zhí)行的方法(設(shè)備不具備推送能力)

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
    NSLog(@"遠(yuǎn)程推送注冊失敗 原因是:%@",error);
}

//當(dāng)程序收到遠(yuǎn)程推送消息后 執(zhí)行該方法 在這個(gè)方法中接收遠(yuǎn)程推送進(jìn)來的內(nèi)容(死亡)

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    NSLog(@"推送內(nèi)容是:%@",userInfo);
}

獲取到蘋果的Token之后 我們需要把token上傳我們的服務(wù)器 因?yàn)檫@樣 我們的服務(wù)器才能告訴蘋果APNS需要給那些設(shè)備發(fā)送推送消息,下面是一張截屏 但此時(shí)是2016年锋拖,我們把token傳遞給服務(wù)器的時(shí)候是需要去掉<>和空格 這些不再啰嗦


騰訊信鴿第三方的推送服務(wù)

下面我們來探討一下 使用騰訊第三方的信鴿進(jìn)行推送是怎么實(shí)現(xiàn)的



->點(diǎn)接入應(yīng)用->點(diǎn)應(yīng)用配置诈悍,我們會(huì)看到應(yīng)用配置里面有我們應(yīng)用的各種信息 ,而且需要我們上傳開發(fā)證書



點(diǎn)擊上傳我們看到需要的是一個(gè)pem格式的證書 那么我們怎么獲取pem格式的證書呢兽埃?這時(shí)候我們的好朋友鑰匙串又粉墨登場了

->



->

此時(shí)我們就獲得了一個(gè).p12的文件 我們把.p12轉(zhuǎn)化成pem格式文件的話 需要用到終端我們切換到桌面上 在終端輸入:openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes 并且將桌面上p12的名字進(jìn)行替換 然后回車侥钳,這個(gè)時(shí)候需要我們輸入一個(gè)密碼 這個(gè)密碼就是我們進(jìn)行導(dǎo)出p12文件是的密碼 然后在回車 此時(shí).pem的文件就已經(jīng)生成好了 我們在信鴿的配置平臺(tái)里面點(diǎn)擊上傳就可以了 上傳成功的話 會(huì)顯示

開發(fā)證書驗(yàn)證通過后 在配置平臺(tái)會(huì)顯示驗(yàn)證通過
我們需要在AppDelegate進(jìn)入信鴿的頭文件
#import "XGPush.h"

注冊信鴿

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //初始化信鴿
    [XGPush startApp:2200189030 appKey:@"I958DSYJ18GA"];
return YES;
}

此時(shí)還沒完讲仰,我們需要在信鴿配置平臺(tái)添加一臺(tái)設(shè)備慕趴,通過以下方法 我們能過的一個(gè)設(shè)備的Token

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
    [XGPush registerDevice:deviceToken];//信鴿獲取Token
    NSLog(@"遠(yuǎn)程推送能力注冊成功,deviceToken:%@",deviceToken);
}

接下來我們就可以進(jìn)行推送了 我們點(diǎn)->創(chuàng)建通知(信鴿配置平臺(tái)上)鄙陡,推送環(huán)境我們選開發(fā)環(huán)境就行了 其他的自己設(shè)定



點(diǎn)擊-> 確認(rèn)推送之后就可以進(jìn)行推送了 冕房,此時(shí)測試機(jī)可以收到信息,但是用戶點(diǎn)擊了信息之后如何處理呢趁矾?需要執(zhí)行-(void)application:(UIApplication *)application didReceiveRemoteNotification:方法 userInfo里面就是我們推送的信息

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    NSLog(@"推送內(nèi)容是:%@",userInfo);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耙册,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子毫捣,更是在濱河造成了極大的恐慌详拙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔓同,死亡現(xiàn)場離奇詭異饶辙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)斑粱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門弃揽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人则北,你說我怎么就攤上這事矿微。” “怎么了尚揣?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵涌矢,是天一觀的道長。 經(jīng)常有香客問我快骗,道長娜庇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任方篮,我火速辦了婚禮思灌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恭取。我一直安慰自己泰偿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布蜈垮。 她就那樣靜靜地躺著耗跛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪攒发。 梳的紋絲不亂的頭發(fā)上调塌,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音惠猿,去河邊找鬼羔砾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的姜凄。 我是一名探鬼主播政溃,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼态秧!你這毒婦竟也來了董虱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤申鱼,失蹤者是張志新(化名)和其女友劉穎愤诱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捐友,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淫半,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匣砖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撮慨。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖脆粥,靈堂內(nèi)的尸體忽然破棺而出砌溺,到底是詐尸還是另有隱情,我是刑警寧澤变隔,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布规伐,位于F島的核電站,受9級(jí)特大地震影響匣缘,放射性物質(zhì)發(fā)生泄漏猖闪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一肌厨、第九天 我趴在偏房一處隱蔽的房頂上張望培慌。 院中可真熱鬧,春花似錦柑爸、人聲如沸吵护。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馅而。三九已至,卻和暖如春譬圣,著一層夾襖步出監(jiān)牢的瞬間瓮恭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工厘熟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屯蹦,地道東北人维哈。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像登澜,于是被迫代替她去往敵國和親阔挠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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