我的iPhone应用程序的委托已经设置了推送通知:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
for (id key in userInfo) {
NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
}
}
现在,我启动它,然后按主页按钮暂停。然后我向设备发送通知,并收到通知。出现一个对话框,其中包含两个按钮 - “关闭”和“查看”。现在,当我点击“查看”时,应用程序将恢复,并且didReceiveRemoteNotification将发送给代理。
但如果我点击“关闭”,该应用程序仍然在后台。如果我然后手动启动应用程序,则不会发送“didReceiveRemoteNotification”或“didFinishLaunchingWithOptions”。那么 - 我的有效载荷在哪里?在这种情况下如何获得有效载荷?
答案 0 :(得分:4)
如果用户关闭通知并使用应用程序图标启动应用程序,您将无法再获得有效负载......它将永远丢失。
“处理本地和远程通知”部分的http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html对此进行了描述。
另请注意,服务器仅为用户保存一个应用通知。如果设备处于离线状态且您没有收到通知,但是您发送了另一个通知,则第一个通知将永远不会到达用户,因为它取代了第一个。