gpt4 book ai didi

ios - 接入点 : didReceiveRemoteNotification:fetchCompletionHandler did not run when app is in background (unless xcode is debugging)

转载 作者:可可西里 更新时间:2023-11-01 04:45:22 24 4
gpt4 key购买 nike

我在运行 iOS 8.1 的 iPad 2 中遇到有关 APNS 的问题。我在谷歌上搜索了几天并尝试了所有我能找到的解决方案。但是我似乎无法解决这个问题。

我做了什么:

  1. 启用的功能:远程通知、后台获取
  2. 我在 aps 负载中有“content-available = 1”。
  3. 我在 didReceiveRemoteNotification:fetchCompletionHandler 中使用了 NSLog(),这样我可以在设备日志中清楚地看到该方法是否被触发

我想做的事情:

我想在后台收到 APNS 时执行网络请求。我相信我可以使用 beginBackgroundTaskWithExpirationHandler 和东西很好地处理那部分。但是,继续调查我发现问题是由于 didReceiveRemoteNotification:fetchCompletionHandler not been running when app is in background state.

问题:

didReceiveRemoteNotification:fetchCompletionHandler 可以在应用程序处于前台时触发。但它仅在 xcode 仍在调试应用程序时在后台触发。 这意味着如果我拔下电缆(调试 session 结束),它就无法再触发。如果我将其重新插入,情况相同。没有响应。

但是,与此同时,我仍然可以在设备日志中看到带有警报正文和声音的 APNS(尽管该方法仍未触发)。

我尝试了“无声”推送通知的所有组合:sound = "", alert = "", 等等。但似乎没有任何效果。这里的专业人士有什么帮助吗?

谢谢。

最佳答案

仔细检查后台应用刷新是否已打开。我在旅行时将其关闭后遇到了一段时间。

此外,您不需要在 didReceiveRemoteNotification:fetchCompletionHandler 中使用后台任务,因为它已经在后台运行。只需确保在完成网络请求后调用适当的完成处理程序即可。

最后,didReceiveRemoteNotification:fetchCompletionHandler 不会在常规(非静默)通知上调用,因为常规通知不会唤醒您的应用程序并执行代码。


编辑:另一个需要检查的奇怪的模糊事物是通知框架数据中的优先级 - link to Apple Documentation - 命令 F 获取“优先级”以获取详细信息。当我执行此操作时,构建通知的 Ruby gem 默认使用 10,如果您仅使用“内容可用”而没有其他任何内容,则据说这是不允许的。工作很忙,我从来没有使用 5 的优先级来测试它,但这可能会有所帮助。

关于ios - 接入点 : didReceiveRemoteNotification:fetchCompletionHandler did not run when app is in background (unless xcode is debugging),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33819444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com