【问题标题】:Silent push notifications in iOS 11 ignored.iOS 11 中的静默推送通知被忽略。
【发布时间】:2018-06-07 23:29:18
【问题描述】:

如果我尝试在 iOS 11 上发送无声推送通知(没有徽章/声音/警报)并且只有内容可用,根据无声通知的规范,通知将被忽略并且不会转发到应用程序。

这是通知

{
    "aps" : {
        "content-available" : 1,
    }, 
    "type" : "0"
}

设备日志有:

<Error>: Ignoring notification with no alert, sound or badge (it.my.app.dev): C146-3838

更完整:

Dec 27 10:11:30 iPierX SpringBoard(UserNotificationsServer)[59] <Notice>: [it.my.app.dev] Received remote notification request C146-3838 [ hasAlertContent: 0, hasSound: 0 hasBadge: 0 hasContentAvailable: 1 hasMutableContent: 0 ]
Dec 27 10:11:30 iPierX SpringBoard(UserNotificationsServer)[59] <Notice>: [it.my.app.dev] Deliver push notification request C146-3838
Dec 27 10:11:30 iPierX SpringBoard(UserNotificationsServer)[59] <Notice>: [it.my.app.dev] Passing content-available push to Duet
Dec 27 10:11:30 iPierX SpringBoard(DuetActivityScheduler)[59] <Notice>: SUBMITTING: <private>
Dec 27 10:11:30 iPierX SpringBoard(UserNotificationsServer)[59] <Error>: Ignoring notification with no alert, sound or badge (it.my.app.dev): C146-3838
Dec 27 10:11:30 iPierX SpringBoard(UserNotificationsServer)[59] <Notice>: [it.my.app.dev] Not saving push notification C146-3838 to store [ error=Error Domain=UNErrorDomain Code=1401 "Notification has no user-facing content" UserInfo={NSLocalizedDescription=Notification has no user-facing content} ]
Dec 27 10:11:30 iPierX dasd(DuetActivitySchedulerDaemon)[1645] <Notice>: Submitted Activity: com.apple.pushLaunch.it.my.app.dev:EA2367 <private>
Dec 27 10:11:30 iPierX dasd(DuetActivitySchedulerDaemon)[1645] <Notice>: Daemon Canceling Activities: {(
    com.apple.pushLaunch.it.my.app.dev:EA2367
)}
Dec 27 10:11:30 iPierX dasd(DuetActivitySchedulerDaemon)[1645] <Notice>: CANCELED: com.apple.pushLaunch.it.my.app.dev:EA2367 <private>

【问题讨论】:

  • 请尝试在推送数据中至少使用一个键(徽章或声音或警报)。在 iOS 11 中,字典中应该至少有一个键。
  • 试过了,但不同的错误,相同的结果,请注意文档在静默通知(称为配置后台更新通知)上是不同的developer.apple.com/library/content/documentation/…

标签: ios apple-push-notifications silent-notification


【解决方案1】:

这也有效,到达时不会播放声音:

{
    aps = {
        "content-available" : 1,
        sound : ""
    };
}

【讨论】:

  • 不错的尝试.. 不能那样工作。例如,我可以使用 "sound" : "x" 管理不同的效果。但还是不行。
  • 是的,最终它按预期工作。现在我不记得了,也许这是最重要的事情......对不起
【解决方案2】:

好的.. 一段时间后,我与一些 Apple 工程师聊天,在这里,我让它工作了。关键是将通知设置为高优先级作为传递优先级,以及content-available = 1

当然,静默推送通知有通常的速率限制,但总体而言,它按预期工作。

【讨论】:

  • 我还发现如果您将alertBody 设置为空,通知会更可靠。否则,即使设置了内容可用标志,您的设备仍然可以忽略后台推送。
  • 如何设置“高优先级”?
  • developer.apple.com/documentation/usernotifications/… - 这是对 APNs apns-priority 的请求中的标头,值为 5(根据 Apple 文档)
  • 但老实说,我在我的服务器代码中没有找到这个标头,所以我想只是省略它就可以了。如果使用 Firebase(在另一台服务器上),我将优先级设置为 normale 而不是 high
  • apns-priority: 5 不是高优先级。这是低优先级。根据上面的链接文档,省略该值默认为 10。这个答案没有意义。
猜你喜欢
  • 2018-12-05
  • 1970-01-01
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
相关资源
最近更新 更多