我已将推送通知添加到我的应用中,通知随'content-available'
一起发送。
我看到这种奇怪的行为(通常)5个通知中的2个未到达应用程序的application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
功能 但仅在未调试时< / EM>
是的,没错。如果我已经连接了调试器,那就有区别了。
在这种情况下,我总是会在didReceiveRemoteNotification
中收到5个通知中的5个:
didReceiveRemoteNotification
被召唤5次。在这种情况下,我通常会在didReceiveRemoteNotification
(有时4个)中收到3个通知中的3个。
didReceiveRemoteNotification
被称为3-4次。我的didReceiveRemoteNotification
很简单:
var received = 0
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
received += 1
application.applicationIconBadgeNumber = received
sleep(2) // do some "work", same behaviour with or without this line...
completionHandler(.newData)
}
然后我只重置application.applicationIconBadgeNumber
和received
中的applicationDidBecomeActive
和didFinishLaunchingWithOptions
。
curl
命令发送它们。 curl &
(即并行开始),我会看到相同的行为。curl ; sleep
(即在每个卷曲之间等待1秒)我得到所有这些。sleep
中添加的用于测试的didReceiveRemoteNotification
并没有任何区别。 我的想法是,如果通知中包含&#39; content-availability&#39;在后台处理另一个时收到的,它会丢弃任何不发送任何内容可用性的内容。在此期间到应用程序。