application:didReceiveRemoteNotification:fetchCompletionHandler:多次调用。如何避免?

时间:2013-12-16 16:23:40

标签: ios iphone objective-c ios7 apple-push-notifications

我有一个使用远程/推送通知的应用程序。

使用远程通知的后台模式,一切都按预期工作。应用程序唤醒并从服务器获取所有需要的数据。

但是如果没有从通知中心清除推送通知警报,并且用户单击它application: didReceiveRemoteNotification: fetchCompletionHandler:将再次调用方法,这意味着它将向服务器发送新请求,这是不合需要的行为。

第一个选项是检查应用程序状态,但是当应用程序处于暂停状态时会导致我出现问题。我必须执行下面的代码,但这对我不起作用:

    if([UIApplication sharedApplication].applicationState == UIApplicationStateActive || [UIApplication sharedApplication].applicationState == UIApplicationStateBackground){

    }
    if([UIApplication sharedApplication].applicationState  == UIApplicationStateInactive){

    }

第二个选项是,当用户打开应用程序时是否有办法清除通知中心的警报,但我找不到办法。

那么有没有办法避免第二次调用application:didReceiveRemoteNotification: fetchCompletionHandler:方法?

1 个答案:

答案 0 :(得分:2)

您可以在APNS消息中发送唯一ID,然后通过记住该ID来过滤第二个呼叫 - 在您的应用的临时收集中(如果您在收到并点击APNS消息之间杀死应用,则会第二次呼叫您)存储(在任何情况下都避免二次通话)。