如題,本文記錄了一條通知從服務端發送,到在APP收到整個過程的原理。
一條通知從在服務端發送,到在APP收到,整個流程涉及三個部分,包括:
- 我們自己的服務端(通知的源發送者)。
- 蘋果(Apple)公司的通知推送服務(Apple Push Notification Service,簡稱APNS)。APNS是通知的實際發送者。
- 我們的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就會收到通知啦。