點擊通知欄的通知進入程序時,會觸發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進行判斷是否有通知,然后發請求獲取數據
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!
新聞熱點
疑難解答