iOS遠(yuǎn)程推送Push開(kāi)發(fā)教程
遠(yuǎn)程推送通知
什么是遠(yuǎn)程推送通知
顧名思義,就是從遠(yuǎn)程服務(wù)器推送給客戶端的通知(需要聯(lián)網(wǎng))遠(yuǎn)程推送服務(wù),又稱為APNs(Apple Push Notification Services)
為什么需要遠(yuǎn)程推送通知
傳統(tǒng)獲取數(shù)據(jù)的局限性 只要用戶關(guān)閉了app,就無(wú)法跟app的服務(wù)器溝通,無(wú)法從服務(wù)器上獲得最新的數(shù)據(jù)內(nèi)容
遠(yuǎn)程推送通知可以解決以上問(wèn)題 不管用戶打開(kāi)還是關(guān)閉app,只要聯(lián)網(wǎng)了,都能接收到服務(wù)器推送的遠(yuǎn)程通知
遠(yuǎn)程推送通知使用須知
- 所有的蘋(píng)果設(shè)備,在聯(lián)網(wǎng)狀態(tài)下,都會(huì)與蘋(píng)果的服務(wù)器建立長(zhǎng)連接 什么是長(zhǎng)連接 只要聯(lián)網(wǎng)了,就一直建立連接
- 長(zhǎng)連接的作用 時(shí)間校準(zhǔn) 系統(tǒng)升級(jí) 查找我的iPhone .. ...
- 長(zhǎng)連接的好處 數(shù)據(jù)傳輸速度快 數(shù)據(jù)保持最新?tīng)顟B(tài)
推送原理
Provider就是我們公司的服務(wù)器,經(jīng)過(guò)蘋(píng)果的APNs服務(wù)器找到我們的設(shè)備,給我們?cè)O(shè)備上的客戶端應(yīng)用推送消息。那APNs服務(wù)器是如何找到我們的設(shè)備和設(shè)備上的應(yīng)用呢,答案就是DeviceToken,DeviceToken需要配置推送證書(shū)才可以獲得,推送證書(shū)需要知道我們的APP ID(應(yīng)用的BundleID,應(yīng)用唯一標(biāo)識(shí))和UDID(設(shè)備唯一標(biāo)識(shí)),還有自己服務(wù)器的UDID,我們先來(lái)打一個(gè)推送證書(shū),登錄開(kāi)發(fā)者中心,點(diǎn)擊證書(shū)模塊
點(diǎn)擊iOS Apps的證書(shū)
進(jìn)入這樣的界面
點(diǎn)擊App IDs,然后點(diǎn)右上角的加號(hào)
箭頭所指為應(yīng)用ID描述,我們假設(shè)寫(xiě)了一個(gè)很牛逼的應(yīng)用,ExcitedApp,接下來(lái)我們填入App ID,注意這里的App ID是固定的,不能有星號(hào)
接下來(lái)我們添加App所需要的服務(wù),然后點(diǎn)擊Continue
一直點(diǎn)擊下一步,完成,在App IDs 列表里面找到我們的ExcitedApp,我們看到
發(fā)現(xiàn)Push服務(wù)是黃色警告,這時(shí)點(diǎn)擊Edit,找到推送模塊,我們需要配置推送證書(shū)了,點(diǎn)擊紅色箭頭所指的位置
我們需要一個(gè)CSR文件,CSR是一個(gè)簽名請(qǐng)求文件,意思就是讓我們的MAC具有調(diào)試推送的權(quán)限,點(diǎn)擊繼續(xù)
點(diǎn)擊了繼續(xù)我們看到
然后我們打開(kāi)Mac上的鑰匙串,從證書(shū)頒發(fā)機(jī)構(gòu)請(qǐng)求證書(shū)
前兩個(gè)隨便寫(xiě),最后選擇存到磁盤(pán)
完成之后,接下來(lái)我們就可以添加CSR文件了
添加完,選擇生成
證書(shū)配好了,下載下來(lái)
配好了!
順帶著我們把發(fā)布的證書(shū)也給配了,步驟都一樣
打開(kāi)我們剛剛下載的證書(shū),添加到鑰匙串中
終于能開(kāi)始整我們的項(xiàng)目了,快哭了都
不要忘記修改bundle id 這里還要搞一個(gè)真機(jī)調(diào)試的證書(shū)才可以
真機(jī)調(diào)試的東西這里不累述,搞了這么多東西,我們終于可以拿到DeviceToken了
在AppDelegate.m中注冊(cè)推送
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert ; UIUserNotificationSettings * setting = [UIUserNotificationSettings settingsForTypes:types categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:setting]; return YES; } -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"%@",deviceToken); }
DeviceToken處理流程
接下來(lái)我們用PushMebaby來(lái)測(cè)試一下我們的推送:https://github.com/stefanhafeneger/PushMeBaby/
將我們的推送證書(shū)添加到項(xiàng)目目錄
接下來(lái)手機(jī)上就可以收到推送了。
本文已被整理到了《iOS推送教程》,歡迎大家學(xué)習(xí)閱讀。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Objective-C關(guān)鍵字@property使用原理探究
這篇文章主要為大家介紹了Objective-C關(guān)鍵字@property使用原理探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01詳解iOS的UI開(kāi)發(fā)中控制器的創(chuàng)建方法
這篇文章主要介紹了iOS的UI開(kāi)發(fā)中控制器的創(chuàng)建方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-11-11iOS如何保持程序在后臺(tái)長(zhǎng)時(shí)間運(yùn)行
這篇文章主要為大家詳細(xì)介紹了iOS如何保持程序在后臺(tái)長(zhǎng)時(shí)間運(yùn)行,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09iOS開(kāi)發(fā)之tableView點(diǎn)擊下拉擴(kuò)展與內(nèi)嵌collectionView上傳圖片效果
這篇文章主要介紹了iOS開(kāi)發(fā)之tableView點(diǎn)擊下拉擴(kuò)展與內(nèi)嵌collectionView上傳圖片效果的相關(guān)資料,需要的朋友可以參考下2016-04-04iOS 動(dòng)畫(huà) —— 禮花效果實(shí)例詳細(xì)
這篇文章主要介紹了iOS 動(dòng)畫(huà) —— 禮花效果實(shí)例詳細(xì)的相關(guān)資料,需要的朋友可以參考下2016-09-09ios 不支持 iframe 的完美解決方法(兼容iOS&安卓)
下面小編就為大家?guī)?lái)一篇ios 不支持 iframe 的完美解決方法(兼容iOS&安卓)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07實(shí)例講解iOS中的UIPageViewController翻頁(yè)視圖控制器
UIPageViewController更像是一個(gè)視圖容器,將每頁(yè)不同的ViewController整合,這里我們將以實(shí)例講解iOS中的UIPageViewController翻頁(yè)視圖控制器:2016-06-06基于UIControl控件實(shí)現(xiàn)ios點(diǎn)贊功能
在開(kāi)發(fā)當(dāng)中,可能很多時(shí)候都需要做個(gè)點(diǎn)贊的需求,如果用按鈕實(shí)現(xiàn),按鈕作為一個(gè)系統(tǒng)復(fù)合控件,外部是一個(gè) View--》UIControl的容器,本文給大家分享一個(gè)基于UIControl控件實(shí)現(xiàn)ios點(diǎn)贊功能,需要的朋友可以參考下2015-09-09