我有一个使用远程/推送通知的应用程序.
使用远程通知的后台模式,一切都按预期工作.应用程序唤醒并从服务器获取所有需要的数据.
但是如果没有从通知中心清除推送通知警报,并且用户单击它应用程序:didReceiveRemoteNotification:fetchCompletionHandler:方法将再次被调用,这意味着它将向服务器发送新请求,这是不合需要的行为.
第一个选项是检查应用程序状态,但是当应用程序处于暂停状态时,这会导致我出现问题.我必须执行类似下面的代码,但这对我不起作用:
if([UIApplication sharedApplication].applicationState == UIApplicationStateActive || [UIApplication sharedApplication].applicationState == UIApplicationStateBackground){
}
if([UIApplication sharedApplication].applicationState == UIApplicationStateInactive){
}
第二个选项是,当用户打开应用程序时是否有办法清除通知中心的警报,但我找不到办法.
那么有没有办法避免第二次调用应用程序:didReceiveRemoteNotification:fetchCompletionHandler:method?
最佳答案 您可以在APNS消息中发送唯一ID,然后通过记住该ID来过滤第二个呼叫 – 在您的应用程序的临时集合中(如果您在收到并点击APNS消息之间杀死应用程序,则会第二次调用)或持久存储(到在任何情况下都避免二次通话).