2011-04-29 69 views
1

我的iPhone應用程序的委託具有推送通知所有設置:缺少推送通知

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {  
    for (id key in userInfo) { 
     NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]); 
    }  
} 

現在,我啓動它,然後暫停按home鍵。然後我發送通知給設備,並收到通知。一個對話框出現兩個按鈕 - 「關閉」和「查看」。現在,當我點擊「查看」時,應用程序被恢復,並且didReceiveRemoteNotification被髮送給委託。

但是,如果我點擊「關閉」,應用程序仍然在後臺。如果我然後手動啓動應用程序,則不會發送「didReceiveRemoteNotification」和「didFinishLaunchingWithOptions」。那麼 - 我的有效載荷在哪裏?在這種情況下如何獲得有效載荷?

回答

4

如果用戶關閉通知並使用應用程序圖標啓動應用程序,您將無法獲得有效負載..它永遠丟失了。

這在「處理本地和遠程通知」部分的http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html中描述。

另請注意,服務器僅爲用戶保存一個針對您應用的通知。如果設備處於離線狀態,並且未收到您的通知,但您發送了另一個通知,則第一個通信將永遠不會到達該用戶,因爲它會替換第一個通知。