iOS 遠程推送

主要說一下iOS的遠程推送 主要看下面兩張圖服務器

Probider是你的服務器 APNs是蘋果推送的服務器 Apple Notifiction Service iPhone 是你的手機終端 Client App 是你的應用程序app

過程分爲三個過程ide

  • 首先你的service 應用程序把要發送的消息內容、目的iPhone的標識打包,發給APNS。
  • 而後APNS在自身的已註冊Push服務的iPhone列表中,查找有相應標識的iPhone,並把消息發到iPhone。
  • 最後iPhone把發來的消息傳遞給相應的應用程序, 而且按照設定彈出Push通知

更詳細一點的圖ui

這個圖更爲詳盡的講述整個過程3d

  1. 首先是應用程序註冊消息推送。
  2. IOS跟APNS Server要deviceToken。應用程序接受deviceToken。
  3. 應用程序將deviceToken發送給PUSH服務端程序。
  4. 服務端程序向APNS服務發送消息。
  5. APNS服務將消息發送給iPhone應用程序。

其中最關鍵的是第三步 應用程序能夠直接把 deviceToken 發送給 YourServer,可是在iOS9 以後 deviceToken 是會發生變化的, 當你卸載程序從新安裝的時候 可能會受到重複的推送,此時 能夠經過 uuid + keyChain + deviceToken的方法,傳給 YourServer, 讓 YourServer 根據 uuid來更新 deviceToken 來保證惟一性,經過 keyChain 保存uuid ,讓應用程序 卸載的時候仍能夠 保留 UUID,保證惟一性。 然而 在iOS 10 以後 卸載應用 會清空 keyChain 參考連接 forums.developer.apple.com/thread/7227…cdn

此時 有什麼辦法呢?blog

  1. 能夠在用戶登陸的時候,根據用戶的惟一標識 好比 用戶的手機號 token等信息 + deviceToken來更新 deviceToken。
  2. 或者使用手機 mac 地址等物理信息確保惟一性
  3. 期待補充
相關文章
相關標籤/搜索