2015-05-27 48 views
2

是否有可能通過應用程序捕獲每個推送通知?通過應用程序捕獲推送通知

我發現,該應用可以在應用啓動時捕獲通知,或者用戶用一條消息錄製。

應用程序使用

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))handler 

這一點。

但是,如果設備得到兩個或更多的通知,所有這些通知都會在點擊其中一個之後丟失(應用程序只捕獲一個)。或者如果用戶突然刪除推送通知。

那麼是否可以保存每個通知(當然與我的應用程序有關)?

+0

如果用戶刪除了推送通知的註冊,您的應用將無法獲取它們。您可以考慮解決方法,取決於您的應用程序的使用情況並創建可以通過代碼觸發的自定義通知橫幅。 – rcat24

回答

1

在AppDelegate類中有一個方法application didReceiveRemoteNotification:。您可以使用它來跟蹤應用程序收到的所有通知

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))handler { 

//Track your notifications. 
//Save your notifications. 

} 
+0

是的,我知道,我使用這種方法。它不能解決我的問題。 –

1

按設計,APNS體系結構只存儲最新的推送通知。 這是因爲向客戶端發送推送通知不可靠,設備可能處於脫機狀態,用戶可能拒絕接收推送通知,網絡端口被阻止或其他原因。

這種只保留最新通知的行爲被稱爲'合併通知'。 點擊此處瞭解詳情: APNS Architecture

在客戶端,該行爲是相同的,一旦你啓動應用程序,你只能在你的字典裏只有從你最後一次收到通知之有效載荷。有效載荷不堆疊。