回憶一下遠程推送的過程數據庫
遠程推送:又稱APNs服務器
長鏈接:微信
特色:傳輸速度快同步
做用:系統升級(正常都是分批推送),查找個人iPhone產品
下面介紹一下遠程推送的原理:登錄
1.設備的惟一標識:UDID.用來區別咱們的設備原理
2.應用的惟一標識:bundleID.用來區別應用程序程序
由於這二者牽扯用戶的信息,因此蘋果必定不會提供給咱們,所以蘋果搞了一個DeviceToken(包含UDID和bundleID),因此只須要把DeviceToken傳給蘋果,蘋果就能解析,這樣就能夠確認你手機上的應用方法
例子:微信的兩個客戶端A和B,首先保證這兩個都是聯網狀態。數據
如今A要發消息給B,經過微信服務器將消息傳遞給B。A和B的微信客戶端都在前臺,經過微信服務器就能夠正常聊天
當B的微信客戶端不在前臺時,這時A發送過來一條消息,這時就須要用到APNs
解釋一下微信如何拿到DeviceToken,和傳遞DeviceToken
1.當微信程序啓動時,調用蘋果提供的API生成DeviceToken,由於不會提供(UDID和bunldeID),因此只能拿到返回值,而後保存到服務器
2.這樣就能經過微信帳號得到DeviceToken,而後傳給蘋果(APNs)
3.APNs收到消息後,經過長鏈接傳遞給對應的客戶
目前想到的一些問題:
1.假如更換設備了
在從新登陸的時候,判斷上傳登陸的設備,更新數據庫中的DeviceToken(之前的設備不能使用了)
2.多點登陸問題(iPad 和 iPhone)
判斷設備類型,保存多個DeviceToken到數據庫中,這個取決於產品的需求
3.顯示信息這塊:顯示信息爲4條,再推送一條,應該是5條
點開後應該爲0 或者爲 5
第一種方法,計數器減減
第二種方法:計數器清零
客戶端與服務器同步