iOS—接收到APNs遠端推送訊息時的處理流程
阿新 • • 發佈:2019-01-26
當iOS接收到遠端推送訊息時會根據當前應用狀態傳送訊息(呼叫方法),此時我們需要在UIApplication代理中進行業務邏輯的處理。
第1種狀態:退出
當應用處於完全退出時,點選接收到的推送訊息會啟動應用並回調下面的方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
可以利用下面程式碼獲取推送訊息:
NSDictionary *userInfo = [launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]
緊接著會回撥下面的方法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
第2種狀態:後臺
當應用處於後臺時,點選接收到的推送訊息會將應用置於前臺回撥下面的方法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
小提示:在前面兩種狀態下,我們常常將應用icon圖示數字變為零。(這個主要根據專案的業務需求)
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[application setApplicationIconBadgeNumber:0];
}
第3種狀態:前臺
當應用處於前臺時,不會在狀態列提示接收到的推送訊息(
ApplicationIconBadgeNumber也不會發生變化),而直接回調下面的方法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
因為當應用執行時,無論在前臺還是後臺都會回撥上面的方法,而且應用在前臺時無法接受到狀態列提示(此時我們常常需要將推送訊息提示給使用者),那麼我們可以使用下面的程式碼判斷應用是否在前臺:
application.applicationState == UIApplicationStateActive
如果返回YES,可以使用UIAlertView給予使用者友好提示。