iOS后台获取仅适用于调试器

iOS后台获取仅适用于调试器,第1张

概述我一直在看这几天,没有取得任何进展.我开发了一个小型测试iOS(9.2.1)应用程序,它接收来自Azure通知中心的推送通知.只要应用程序通过 xcode启动并处于调试模式,一切似乎都能正常工作,包括后台通知推送. 我通过以下回调收到的每个通知都只是将文件写入设备上的文档文件夹.如果我使用xcode设备资源管理器,我可以看到这些文件出现 func application(application: 我一直在看这几天,没有取得任何进展.我开发了一个小型测试iOS(9.2.1)应用程序,它接收来自Azure通知中心的推送通知.只要应用程序通过 xcode启动并处于调试模式,一切似乎都能正常工作,包括后台通知推送.

我通过以下回调收到的每个通知都只是将文件写入设备上的文档文件夹.如果我使用xcode设备资源管理器,我可以看到这些文件出现

func application(application: UIApplication,dIDReceiveRemoteNotification userInfo: [NSObject : AnyObject],fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> VoID) {    makefile(random file name based on timestamp);    completionHandler(UIBackgroundFetchResult.NewData);}

我还在pList文件的uibackgroundmodes部分中启用了以下模式

>取
>远程通知

我发送给ANS服务器的paypload是:

"aps":{ "sound":"default","content-available":1 }

就像我上面提到的,只要应用程序通过xcode运行,我就可以按下主页按钮,但它会进入后台,它会很好地接收推送数据.但是,如果我断开USB电缆,它将停止接收后台推送事件.

值得注意的是,内置的OS通知确实出现了.有谁知道这里可能出现什么问题?

编辑
如果我通过xcode启动应用程序,请拔下USB,发送通知 – 没有任何反应.一旦我重新连接到xcode,它就进来了,代码就运行了!这与认证(开发/生产)有关吗?

解决方法 内容可用密钥表示iOS应将此视为无提示通知.静音通知是静音的 – 它们不显示警报,徽章或播放声音.

包含内容可用密钥和面向用户的功能(如声音或警报)的通知有效负载可视为其中之一.行为未定义 – 通知应该是静默的,不是两者兼而有之.

无提示通知由应用程序(dIDReceiveRemoteNotification:fetchCompletionHandler)处理,而不是应用程序(_:dIDReceiveRemoteNotification :).当您的应用似乎没有收到iOS正在调用此方法的通知时,可能会发生这种情况.

在您的情况下,您可能也会受到iOS的限制.如果过于频繁地收到静默通知,如果您的应用程序使用了太多资源来处理它们等,iOS将延迟通知的发送.从Xcode启动时不会延迟它们.

>您的无声通知不应包含声音.将其作为单独的通知,或尝试在应用内部播放背景声音.>检查您向应用发送无声通知的速率.最多发送2小时.>验证您的静默通知处理代码不会使用过多的cpu,内存或能量.处理静默通知时,目标使用15mb或更少.还要确保使用30秒的iOS调用应用程序调用fetchCompletionHandler块:dIDReceiveRemoteNotification:fetchCompletionHandler

总结

以上是内存溢出为你收集整理的iOS后台获取仅适用于调试器全部内容,希望文章能够帮你解决iOS后台获取仅适用于调试器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1003717.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存