1. 程式人生 > >iOS—接收到APNs遠端推送訊息時的處理流程

iOS—接收到APNs遠端推送訊息時的處理流程

當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給予使用者友好提示。