【发布时间】:2013-10-14 21:44:27
【问题描述】:
在 WWDC 2013 的“多任务处理的新功能”演示文稿中,有一个关于静默推送通知的部分。这似乎是直截了当的。根据介绍,如果您仅在 content-available 设置为 1 的情况下发送 APS 有效负载,用户将不会收到通知。
// A. This doesn't work
{
aps: {
content-available: 1
}
}
我的测试表明这不起作用,因为没有收到推送。但是如果我包含 sound 属性但不包含 alert 属性,它会起作用(尽管不再静音)。
// B. This works
{
aps: {
content-available: 1,
sound: "default"
}
}
但是,如果我将声音属性更改为播放无声音频,我可以模仿无声推送。
// C. This works too.
{
aps: {
content-available: 1,
sound: "silence.wav"
}
}
有谁知道:
- 如果这是一个错误?
- 如果假设 B 或 C 被视为远程通知是正确的(而不是需要声音属性的静默推送错误)?如果是这样,这意味着它不会像 Silent Pushes 那样受到速率限制……Apple 可能会解决这个问题。所以我可能不应该依赖它。
- 速率限制是多少(每 X 秒推送 N 次,等等)?
提前致谢。
编辑更多信息
对于 A,应用程序的状态无关紧要。从未收到通知。
似乎 B 和 C 仅在将属性和值括在引号中时才有效,如下所示。
{"aps":{"content-available": 1, "sound":"silent.wav"}}
无论状态如何,通知都会到达 application:didReceiveRemoteNotification:fetchCompletionHandler:。
【问题讨论】:
-
在任何应用状态下都不起作用吗?对我来说,只要应用程序在前台运行(调用了didReceiveRemoteNotification),“A”就可以工作。但是当应用程序没有运行时,应用程序没有收到通知(我只是听到声音,当我尝试“B”时)。当您使用“B”或“C”时,您的应用是否会在后台被唤醒 (didReceiveRemoteNotification)?
-
我看到了类似的行为,我想这可能是因为我已经尝试了一段时间,而且我一开始没有正确设置应用程序,所以 Apple 之前可能已经限制了我我的设置正确。
-
老兄......我希望我能给你 10 票
-
看看你是否选中了
Project Capabilities中的Background fetch复选框>Background Modes,因为第一个选项应该可以工作。无声推送不需要声音属性,即使应用程序在后台/前台运行或未运行,也始终到达application:didReceiveRemoteNotification:fetchCompletionHandler:。 -
现在是 2021 年,我一直在开发我的应用程序并打算使用静默推送通知,但是直到我偶然发现了这篇文章才能够收到它。这很奇怪,但有效载荷中的关键“声音”起作用了。感谢您将其放入社区。我希望有人在某个时候提出合理的解释。荣誉。
标签: ios push-notification ios7