設備接到APNS發來的通知處理方式


我們在做遠程通知時,從服務端發來的通知,我們的設備狀態可以分爲幾種狀態,如下:

1. 應用還沒有加載,即應用既不在前臺,也不在後臺運行


這時如果點擊通知的顯示按鈕,或者是圖標icon,會調用didFinishLaunchingWithOptions,不會調用didReceiveRemoteNotification方法。

如果點擊通知的關閉按鈕,再點擊應用,只會調用didFinishLaunchingWithOptions方法。

我們需要做的是在這個方法只能通過關鍵字獲取APNS的消息內容。

//第一次從通知欄進入
    if ([[launchOptions allKeys] containsObject:UIApplicationLaunchOptionsRemoteNotificationKey]) {
        NSDictionary *remoteNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
        
    }

2. 應用在前臺(foreground)


這時如果收到通知,會觸發didReceiveRemoteNotification方法。我們只需要在這個方法中獲取對應消息數據,在我們ui層面做相應操作就可以了。我建議的做法是用NSNotificationCenter。

3.應用在後臺


(1)此時如果收到消息通知,點擊通知欄消息按鈕,會調用didReceiveRemoteNotification方法。

(2)通過點擊圖標icon啓動應用,則didFinishLaunchingWithOptions和didReceiveRemoteNotification都不會調用,那麼我們就不能通過回調方法獲取對應消息內容了,此時的解決辦法是,根據發過來通知中的badge進行判斷是否有通知,在應用進入後臺時,標記當前時間,應用再次啓動時,通過我們標記的時間,到目前時間段,在服務端後臺做已發消息內容數據的請求。

應用進入後臺調用:applicationDidEnterBackground,在此方法中做時間標記

應用啓動會調用:applicationWillEnterForeground和applicationDidBecomeActive,做數據請求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章