天天看點

iOS遠端通知的實作機制

如題,本文記錄了一條通知從服務端發送,到在APP收到整個過程的原理。

一條通知從在服務端發送,到在APP收到,整個流程涉及三個部分,包括:

  1. 我們自己的服務端(通知的源發送者)。
  2. 蘋果(Apple)公司的通知推送服務(Apple Push Notification Service,簡稱APNS)。APNS是通知的實際發送者。
  3. 我們的APP(通知的接收者)

整個流程為:

1. APP啟動時,調用iOS的API(registerForRemoteNotifications)在APNS注冊,說APP需要接收來自服務端的通知。

2. 如果注冊成功,APP會收到一個裝置辨別(DeviceToken)。需要在AppDelegate中重寫下面的方法:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
           

收到的deviceToken是一個字元串,類似于:

<f8ed78b6 a0e4d4c1 7ed9c274 4fa8a526 941d46b4 ccd8e949 d5d16e18 d74bcb7d> 
           

3. APP将收到的deviceToken,做一下處理,去除空格和前後的<>,得到如下結果:

f8ed78b6a0e4d4c17ed9c2744fa8a526941d46b4ccd8e949d5d16e18d74bcb7d
           

4. APP将處理過的deviceToken發送給我們的自己的服務端。如果我們的APP需要使用者名,APP也要将目前登入的使用者的唯一辨別(本文以userId為例)發給我們的服務端。

5. 我們的服務端接收deviceToken和userId,并且維護deviceToken與userId的對應關系。

6. 我們的服務端在需要發送通知的時候,找到需要接收通知的使用者對應的deviceToken。将通知内容(包括deviceToken)發給APNS,說我要發這些内容到這個裝置。

7. APNS收到通知内容後,把通知内容發送給deviceToken對應的裝置。APP就會收到通知啦。