我有一个启用了推送通知的应用程序。我添加了后台模式,为两个 iOS 版本添加了注册逻辑,它们应该可以正常工作。 在 iOS7 中,这按预期工作(应用程序“唤醒”并获取数据):
"customJson":{ },
"aps":{"content-available":1}
在 iOS8 中做同样的事情我必须添加空声音,否则 didReceiveRemoteNotification: fetchCompletionHandler: 方法未执行:
"customJson":{ },
"aps":{"content-available":1,sound:""}
对于注册,我使用 this 中的解决方法问题。 为什么会这样,有什么想法吗?
最佳答案
之前遇到过同样的问题,这似乎是静默推送通知的错误。我加了
sound:""
就像您所做的那样,它奏效了。
我学到的是,当用户退出应用程序时(通过在任务管理器上滑动终止),系统不会处理静默通知: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/index.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandler : 因此,如果用户终止了该应用程序,它就不应再在后台执行任何操作。从用户的角度来看,这是有道理的。
关于iOS8 - 在有效负载中添加 "sound"属性之前,静默推送通知不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25891323/