我有一个应用程序,使用远程/推送通知。应用程序:didReceiveRemoteNotification:fetchCompletionHandler:多次调用。如何避免?
使用远程通知的后台模式,并且一切按预期工作。应用程序唤醒并从服务器获取所有需要的数据。
但是,如果通知中心没有清除推送通知警报,并且用户单击它,application: didReceiveRemoteNotification: fetchCompletionHandler:
方法将被再次调用,这意味着它会向服务器发送新请求,这是不受欢迎的行为。
第一种选择是检查应用程序的状态,但引起了我的问题,当应用程序在suspended.I必须做类似下面的代码,但是这并没有为我工作:
if([UIApplication sharedApplication].applicationState == UIApplicationStateActive || [UIApplication sharedApplication].applicationState == UIApplicationStateBackground){
}
if([UIApplication sharedApplication].applicationState == UIApplicationStateInactive){
}
第二种选择是,在用户打开应用程序时是否有办法清除来自通知中心的警报,但我找不到方法来执行此操作。
那么有没有办法避免第二次拨打application:didReceiveRemoteNotification: fetchCompletionHandler:
方法?
在哪种情况下,您遇到过2次调用方法'application:didReceiveRemoteNotification:fetchCompletionHandler:'? – bobsacameno
非常简单:如果您使用“content-available”进行远程通知:1设备醒来(不是每次都是)并执行应用程序:didReceiveRemoteNotification:fetchCompletionHandler:如果您的通知也是交互式(警报,徽章和声音)和用户点击警报应用程序:didReceiveRemoteNotification:fetchCompletionHandler:再次被调用。 – Foriger