缺少推送通知

时间:2011-04-29 17:12:09

标签: iphone ios4 apple-push-notifications

我的iPhone应用程序的委托已经设置了推送通知:

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

现在,我启动它,然后按主页按钮暂停。然后我向设备发送通知,并收到通知。出现一个对话框,其中包含两个按钮 - “关闭”和“查看”。现在,当我点击“查看”时,应用程序将恢复,并且didReceiveRemoteNotification将发送给代理。

但如果我点击“关闭”,该应用程序仍然在后台。如果我然后手动启动应用程序,则不会发送“didReceiveRemoteNotification”或“didFinishLaunchingWithOptions”。那么 - 我的有效载荷在哪里?在这种情况下如何获得有效载荷?

1 个答案:

答案 0 :(得分:4)

如果用户关闭通知并使用应用程序图标启动应用程序,您将无法再获得有效负载......它将永远丢失。

“处理本地和远程通知”部分的http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html对此进行了描述。

另请注意,服务器仅为用户保存一个应用通知。如果设备处于离线状态且您没有收到通知,但是您发送了另一个通知,则第一个通知将永远不会到达用户,因为它取代了第一个。