APNS:didReceiveRemoteNotification:当app在后台时,fetchCompletionHandler没有运行(除非xcode正在调试)
我在运行iOS 8.1的iPad 2中遇到了关于APNS的问题。 我在Google上搜索了几天,并尝试了我能找到的所有解决方案。 但是我似乎无法解决这个问题。
我做了什么:
- 启用的function:远程通知,后台提取
- 我在aps有效载荷中有“content-available = 1”。
- 我在didReceiveRemoteNotification中使用了NSLog():fetchCompletionHandler所以我可以清楚地看到设备日志中是否触发了该方法
我想做的事:
我想在后台收到APNS时执行网络请求。 我相信我可以使用beginBackgroundTaskWithExpirationHandler和stuff来处理这部分。 但是,在调查中我发现问题是由于didReceiveRemoteNotification:当app处于后台状态时,没有运行fetchCompletionHandler。
问题:
didReceiveRemoteNotification:当app在前台时,fetchCompletionHandler可以触发。 但是当xcode仍在调试应用程序时,它仅在后台触发。 这意味着如果我拔掉电缆(调试会话结束),它就不能再触发了。 如果我把它重新插回来也一样。没有回应。
但是,与此同时,我仍然可以收到带有警报正文和声音的APNS(虽然该方法仍未触发),正如我在设备日志中看到的那样。
我尝试了“静音”推送通知的每一个组合:sound =“”,alert =“”等。但似乎没有任何效果。 这里有专业人士的帮助吗?
谢谢。
仔细检查后台应用程序刷新是否已打开。 旅行后把它关掉后,我跑了一会儿。
此外,您不需要在didReceiveRemoteNotification:fetchCompletionHandler
使用后台任务,因为它已在后台运行。 只需确保在完成网络请求后调用相应的完成处理程序。
最后, didReceiveRemoteNotification:fetchCompletionHandler
将不会在常规(非静默)通知上被调用,因为常规通知不会唤醒您的应用并执行代码。
编辑:另一个奇怪的模糊不清的事情是通知框架数据中的优先级 – 链接到Apple文档 – 命令F为’优先级’的详细信息。 当我这样做时,构建通知的Ruby gem在默认情况下使用10,如果你只使用’content-available’而没有别的,那么这个假设是不允许的。 事情忙于工作,我从来没有使用5的优先级来测试它,但它可能会有所帮助。
- 如何强制显示移动Safari底部导航栏以编程方式显示?
- 在UITablView单元的选定状态下更改图像
- App crush:由于未捕获的exception“NSInternalInconsistencyException”而终止应用程序,原因是:“无效的更新:节0中的行数无效
- 离子iOS构build和运行
- 我该如何解决一个早期启动的应用程序,但现在是“由于内存压力而终止”?
- iOS客户端服务器应用程序:HTTP还是TCP / IP?
- 在Objective-C中尝试parsingdate时出现问题
- 自动化设置应用程序,iPhone
- TabBarController didSelectViewController不起作用