一般意義上說推送就是指遠程推送缺厉,本地推送一般可以用來提示長時間未進入應(yīng)用的用戶,也可以用來做鬧鈴氧映。
(一個程序可以推送类垦,首先你要向蘋果公司注冊推送證書)
下面詳細說一下遠程推送(Remote Notification)的流程:
1.當你的程序需要推送時,通過UIApplication中的registerUserNotification注冊遠程推送蹂匹,注冊后碘菜,你的程序會通過iOS系統(tǒng)向APNs服務(wù)器請求,APNs服務(wù)器接到請求后會將請求設(shè)備的device token(設(shè)備令牌)發(fā)送回你的應(yīng)用限寞,在UIApplication的代理方法中可以接收到device token忍啸,如果請求失敗也會通過代理方法返回錯誤信息
2.當應(yīng)用程序拿到device token后,就可以將device token回傳給應(yīng)用提供商服務(wù)器履植,服務(wù)器就知道了這臺設(shè)備可以推送消息了计雌,然后將device token儲存在服務(wù)器內(nèi)部,device token的生成算法只有蘋果公司才知道玫霎,所以為了防止蘋果修改算法造成推送失敗凿滤,最好每次啟動程序時都請求一次device token,在device token發(fā)生改變時鼠渺,告訴服務(wù)器新的device token
(推送一般情況下是程序提供商向用戶推送一些最新的消息或者資訊鸭巴,不過比如QQ,微信等可以在離線的情況下進行消息的提醒,下面以qq推送離線消息為例拦盹,相比從服務(wù)器推送鹃祖,qq離線消息的推送是由客戶端編輯信息的)
3.現(xiàn)在如果程序要推送消息了,就可以將消息和要發(fā)送的對象的賬號發(fā)送給程序提供商服務(wù)器普舆,服務(wù)器會通過你要推送的對象的賬號信息找到對應(yīng)綁定的device token恬口,然后將推送消息內(nèi)容和device token傳給APNs服務(wù)器
4.APNs服務(wù)器在接收到消息內(nèi)容和device token后會查找已注冊的設(shè)備然后將對應(yīng)的信息和device token推送到指定的設(shè)備上,設(shè)備通過device token中的app id找到要推送的app沼侣,然后信息會按照app的推送設(shè)置顯示信息
推送流程:
deviceToken:包括appID和UDID祖能。手機在聯(lián)網(wǎng)狀態(tài)下,與蘋果有個長連接蛾洛,可以生成一個deviceToken养铸,在appdelegate的didReceiveXXX方法里和可以獲取deviceToken。
APNs:蘋果的推送服務(wù)器.
1.在developer.apple.com上配置推送證書(和配置發(fā)布證書一個流程):1.配證書轧膘,2注冊appid.3.生成Mobileprofile文件钞螟。
2.獲取deviceToken,將deviceToken和要推送的消息谎碍,發(fā)送到公司服務(wù)器鳞滨,公司服務(wù)器找不到對方的手機,所以要把deviceToken和要推送的消息推給蘋果的APNs,蘋果根據(jù)deviceToken把消息推給用戶手機上的某個app.
補充蟆淀;為了減小公司服務(wù)器的壓力拯啦,一般用第三方JPush(激光推送)來做澡匪。