想要:我希望能够在应用程序处于后台时(包括手机处于睡眠模式时)在收到推送通知(静音)时触发 http 请求。
假设:推送通知唤醒在后台运行的应用程序(即使在睡眠中) https://discussions.apple.com/thread/3650066:提供建议新路由器的解决方案,但这仅适用于在 WiFi 上的手机. 我正在使用蜂窝连接。
尝试:我已经验证我使用了正确的委托方法 didRecieveRemoteNotification
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
NSLog(@"Remote Notification Recieved From:\t%@", userInfo[@"requestorSessionId"]);
[_agentService handleAgentLocationRequest:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
我试图记录收到的任何推送通知,但如果手机处于睡眠模式,这些通知不会显示。(通过 iOS 控制台读取日志http://lemonjar.com/iosconsole/)
我已经验证通知正在工作,因为当应用程序处于前台或后台(非睡眠模式)时,我能够看到日志语句。
我已将声音播放添加为推送通知有效负载的一部分,并且在收到通知(睡眠模式)时我能够听到声音播放,但我的应用程序永远不会发出要处理的通知。
我还在项目功能下的 UIBackground 模式中启用了远程通知。
更新
意识到我正在通过本地网络进行测试,当手机进入睡眠状态时,WiFi 无线电也会关闭,这使得在没有端口转发的情况下无法连接到本地 ip。
即使有了这个新发现。在这种情况下,我仍然遇到特定 iPhone 的问题,即 iPhone 6 会在短时间内收到推送通知,然后再也不会收到它们。
在此先感谢,我将监控线程以根据需要提供更多信息。