遠程推送通知
什么是遠程推送通知
顧名思義,就是從遠程服務(wù)器推送給客戶端的通知(需要聯(lián)網(wǎng))遠程推送服務(wù),又稱為apns(apple push notification services)
為什么需要遠程推送通知
傳統(tǒng)獲取數(shù)據(jù)的局限性 只要用戶關(guān)閉了app,就無法跟app的服務(wù)器溝通,無法從服務(wù)器上獲得最新的數(shù)據(jù)內(nèi)容
遠程推送通知可以解決以上問題 不管用戶打開還是關(guān)閉app,只要聯(lián)網(wǎng)了,都能接收到服務(wù)器推送的遠程通知
遠程推送通知使用須知
- 所有的蘋果設(shè)備,在聯(lián)網(wǎng)狀態(tài)下,都會與蘋果的服務(wù)器建立長連接 什么是長連接 只要聯(lián)網(wǎng)了,就一直建立連接
- 長連接的作用 時間校準 系統(tǒng)升級 查找我的iphone .. ...
- 長連接的好處 數(shù)據(jù)傳輸速度快 數(shù)據(jù)保持最新狀態(tài)
推送原理
provider就是我們公司的服務(wù)器,經(jīng)過蘋果的apns服務(wù)器找到我們的設(shè)備,給我們設(shè)備上的客戶端應(yīng)用推送消息。那apns服務(wù)器是如何找到我們的設(shè)備和設(shè)備上的應(yīng)用呢,答案就是devicetoken,devicetoken需要配置推送證書才可以獲得,推送證書需要知道我們的app id(應(yīng)用的bundleid,應(yīng)用唯一標識)和udid(設(shè)備唯一標識),還有自己服務(wù)器的udid,我們先來打一個推送證書,登錄開發(fā)者中心,點擊證書模塊
點擊ios apps的證書
進入這樣的界面
點擊app ids,然后點右上角的加號
箭頭所指為應(yīng)用id描述,我們假設(shè)寫了一個很牛逼的應(yīng)用,excitedapp,接下來我們填入app id,注意這里的app id是固定的,不能有星號
接下來我們添加app所需要的服務(wù),然后點擊continue
一直點擊下一步,完成,在app ids 列表里面找到我們的excitedapp,我們看到
發(fā)現(xiàn)push服務(wù)是黃色警告,這時點擊edit,找到推送模塊,我們需要配置推送證書了,點擊紅色箭頭所指的位置
我們需要一個csr文件,csr是一個簽名請求文件,意思就是讓我們的mac具有調(diào)試推送的權(quán)限,點擊繼續(xù)
點擊了繼續(xù)我們看到
然后我們打開mac上的鑰匙串,從證書頒發(fā)機構(gòu)請求證書
前兩個隨便寫,最后選擇存到磁盤
完成之后,接下來我們就可以添加csr文件了
添加完,選擇生成
證書配好了,下載下來
配好了!
順帶著我們把發(fā)布的證書也給配了,步驟都一樣
打開我們剛剛下載的證書,添加到鑰匙串中
終于能開始整我們的項目了,快哭了都
不要忘記修改bundle id 這里還要搞一個真機調(diào)試的證書才可以
真機調(diào)試的東西這里不累述,搞了這么多東西,我們終于可以拿到devicetoken了
在appdelegate.m中注冊推送
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
- ( 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處理流程
接下來我們用pushmebaby來測試一下我們的推送:https://github.com/stefanhafeneger/pushmebaby/
將我們的推送證書添加到項目目錄
接下來手機上就可以收到推送了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。