iOS之點擊通知欄的通知進入程式的觸發事件,ios觸發
點擊通知欄的通知進入程式時,會觸發App Delegate裡的方法,分為以下兩種情況:
1、程式未啟動(即底部工作列裡沒有進程)時:
此種情況下,點擊通知欄的通知進入程式,會觸發以下方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
對於launchOptions參數,需要經過以下處理:
NSDictionary* pushNotificationKey = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
其中的pushNotificationKey才是從服務端推送過來的資料,使用索引值對方式就可以讀取伺服器傳遞過來的額外參數了。
應用還沒有載入,這時如果點擊通知的顯示按鈕,會調用didFinishLaunchingWithOptions,不會調用didReceiveRemoteNotification方法。如果點擊通知的關閉按鈕,再點擊應用,只會調用didFinishLaunchingWithOptions方法。
2、程式已啟動:
如果程式已經啟動,並駐留在記憶體中,不管程式是在前台(Foreground)還是在後台(Background),如果點擊通知欄的通知進入程式將觸發以下方法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
其中的userInfo參數,就已經是服務端推送過來的資料,也是採用索引值對方式進行讀取。
如果點擊關閉再點擊應用,則上面兩個方法都不會被調用這時,只能在applicationWillEnterForeground或者applicationDidBecomeActive,根據發過來通知中的badge進行判斷是否有通知,然後發請求擷取資料