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