虽然这里与另一个问题有相似之处: iOS 10 don't call Notification Service Extension
我希望就具体的不当行为提供一个更具体的问题。考虑以下推送有效负载:
{
"service-alert":{
"title":"[Service]Title",
"subtitle":"[Service]Subtitle",
"body":"[Service]Body may be substituted."
},
"image":"https://some.small/thumbnail.jpg",
"aps":{
"badge":1,
"alert":{
"title":"[Default]Title",
"subtitle":"[Default]Subtitle",
"body":"[Default]A simple body of text."
},
"sound":"default",
"mutable-content":1
}
}
(“服务警报”字典用于测试支持它的设备的默认警报文本的覆盖)
我正在我的 iOS 10 设备(iPhone 6+)上的 Xcode 中进行调试,我在服务扩展中设置了一个断点,以验证它是否有机会在呈现之前修改推送。
当我发送推送时,有时会命中服务扩展(断点命中),我可以验证推送有效负载是否正确,并且显示的推送仅显示默认的“aps”有效负载。没有图像。没有修改的标题/副标题/正文。
我的断点serviceExtensionTimeWillExpire
没有命中。通知机制似乎正在“工作”,但结果不正确。
当我再次发送完全相同的推送时,它可以工作。
图像从“图像” URL 加载,修改后的“服务警报”文本按设计显示。有时我必须发送相同的推送 2 或 3 次才能正常工作,但之后似乎是一致的。因此,如果我看到一次修改后的通知,那么从那时起,每个推送测试似乎都可以正常工作。
我觉得,但还没有确凿的数据支持,一段时间的不活动会导致服务扩展被刷新,并且在被调用时唤醒太慢。如果是这样,这将使它毫无用处,因为收到推送时它永远不会完全清醒。
当前环境:
- Xcode 8.2 测试版 (8C30a)
- iOS 10.2 测试版 2、3 和 4
- 调试方案
任何人都可以在 iOS 10 测试版和/或非测试版上确认/否认这种行为吗?我是否发现了 10.2 的错误,或者这是“正常行为”?