iOS UIBackgroundMode远程通知不适用于4G

use*_*657 9 background push-notification wifi ios 4g

我正在测试内容可用= 1的推送通知,除非在Wi-Fi上,否则它们似乎不会在后台传送到应用程序.

我在推送通知处理程序的开头有一个简单的日志语句:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
                                                    fetchCompletionHandler:(void (^)   (UIBackgroundFetchResult))completionHandler {

    NSLog(@"Notification received: %@", userInfo);
    completionHandler(UIBackgroundFetchResultNewData);
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

  1. 运行应用程序,然后按主页按钮将应用程序置于后台.
  2. 发送content-available = 1的推送通知
  3. 观看控制台日志

在Wi-Fi上,控制台日志显示通知.如果我转到设置并关闭Wi-Fi,切换到4G,日志中不再显示通知(尽管它们会在屏幕顶部滑入,因此我知道它们正在交付).

没有崩溃日志,如果我手动点击它,则会记录通知.此外,如果我在Xcode中调试应用程序,则不会发生此问题.(即,如果我在Xcode中调试,该应用程序将在后台接收4G通知).有没有其他人经历过这种行为?或者我做错了什么?

编辑:具体:根据我的测试,如果满足以下条件,则不会调用上面的远程通知委托方法:

  1. 应用程序正在后台运行
  2. 电话在LTE网络上,未连接到Wi-Fi
  3. 应用程序未在Xcode调试器中运行
  4. 电话收到内容可用= 1的通知

但是,如果删除条件2(即,手机连接到Wi-Fi),则将调用处理程序.

use*_*657 1

根据此处评论者的反馈以及在多个设备上的重复测试,这似乎是 iOS 上的错误(或预期行为)。