ios – application:didReceiveRemoteNotification:fetchCompletionHandler:多次调用.如何避免?

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

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

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

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

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

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

    }

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

那么有没有办法避免第二次调用应用程序:didReceiveRemoteNotification:fetchCompletionHandler:method?

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

点赞