1. App關(guān)閉時(shí)接收到他推送通知,通過(guò)點(diǎn)擊推送通知來(lái)啟動(dòng)App
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
在程序啟動(dòng)完成后,在此方法中可以得到推送通知的類容,此處又分為遠(yuǎn)程通知和本地通知的區(qū)別。
遠(yuǎn)程通知
NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
本地通知
UILocalNotification *localNoti = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
NSDictionary * userInfo = localNoti.userInfo;
這里,為了讓主界面先加載完成,一般需要延遲一小段時(shí)間后再去處理推送通知,push出相應(yīng)的響應(yīng)頁(yè)面等。
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self didReceiveNotification:userInfo];
});
2.App正在運(yùn)行時(shí)接收到推送通知
遠(yuǎn)程通知
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
本地通知
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
App狀態(tài)
UIApplicationStateActive, // 激活狀態(tài),用戶正在使用App
UIApplicationStateInactive, // 不激活狀態(tài),用戶切換到其他App、按Home鍵回到桌面、拉下通知中心
UIApplicationStateBackground // 在后臺(tái)運(yùn)行
根據(jù)application.applicationState的狀態(tài),判斷執(zhí)行哪種動(dòng)作。