问题描述
我想实施一种解决方案,以便在传入的Apple Wallet Pass更新时主动通知用户。我已经实现了所有的passkit服务器api,大部分内容似乎都可以正常运行。唯一的事情是传入的通知仅对用户“安静”可用。这意味着,当更新显示在锁定屏幕和通知中心上时,设备不会唤醒屏幕,也不会播放振动/声音,也不会显示横幅。
我尝试了不同的更新方法,即使在浏览相似的案例时,我也几乎找不到一个地方提到横幅用于通行证更新(但问题似乎更复杂,没有解决方案-https://developer.apple.com/forums/thread/65986)指出了横幅。
我能够看到两种通知中心更新
- 使用
changeMessage
(带有/不带有可选的%@
字符串)进行任意字段更改的一种方法:
pass.json
中的示例更新更改片段(然后在Notification Center中以通常的方式显示通知横幅,但只是静默传递)
{
"eventTicket" : {
"headerFields" : [{
"key" : "code","value" : "The Code","changeMessage": "Code changed to: %@"
}]
}
示例更新更改了pass.json
中的片段:
{
"locations": [{
"longitude" : 20.000,"relevantText" : "the location!","latitude" : 50.000
}]
}
我检查了钱包通知设置,并选择了所有三个选项(锁定屏幕,通知中心和横幅)。我正在寻找解决的一些类似问题,有关主动(锁定屏幕唤醒/声音/振动)通过更新通知的一些准则,或者至少描述了是否/为什么/为什么不能使用此功能的清晰描述。 >
更新: 以上内容适用于装有iOS 13.5.2的iPhone 6s设备
在具有changeMessage
的iOS 13.7的iPhone 8上,更新相同的更改会触发锁定屏幕唤醒,并且还会显示徽章,但仍然没有声音/振动。同样,relevantDate
不会更新锁定屏幕的唤醒,也不会显示横幅广告/声音/振动。
解决方法
您在更新中描述的行为是钱包的当前行为。相关的日期和位置消息始终是被动的,因为它们旨在使您在正确的时间,正确的时间(例如,航班当天的机场或星巴克的队列中)更容易找到卡。
更改消息更新被视为活动更新。它们在到达时曾经振动和/或发出声音,但苹果公司将其简化为唤醒手机并在数个版本之前显示在锁屏上。作为发行人,您无能为力,或者客户可以通过手机进行更改此行为。
我能提供的最佳建议是将有关您的用例的信息反馈给Apple,以及为什么发出声音或振动会为用户提供更好的体验。