TL; DR:需要在APNs通知有效负载JSON中设置哪个密钥才能对应threadIdentifier
对象的UNNotificationContent
属性?例如"category"
键对应categoryIdentifier
属性。
iOS 10引入了Notification Content Extension
,允许我们在扩展通知时显示视图控制器。
我们提供的视图控制器符合UNNotificationContentExtension
协议,这要求我们实施didReceive(_:)
方法。
此方法的文档包括以下段落:
当您的视图控制器可见时,可以多次调用此方法。具体来说,当新的通知到达 threadIdentifier 值与已经显示的通知的线程标识符匹配时,会再次调用它。
可以在代码中为本地通知设置threadIdentifier
属性,但我不知道如何为从服务器发送到APN的远程通知设置它。
UNNotificationContent
文档描述了此处的属性:http://developer.apple.com/reference/usernotifications/unnotificationcontent
以下JSON包含我尝试过的密钥("thread"
和"thread-identifier"
):
{
"aps" : {
"alert" : "Hello World!",
"sound" : "default",
"category" : "example-category",
"thread" : "example-thread",
"thread-identifier" : "example-thread-identifier"
}
"custom-field" : "some value",
}
我找不到Apple提供的有关如何设置此内容的任何文档。有人可以帮忙吗?
答案 0 :(得分:12)
我从Apple的联系人处发现填充此属性的正确密钥是"thread-id"
密钥。
因此发送给APN的JSON如下:
{
"aps" : {
"alert" : "Hello World!",
"sound" : "default",
"category" : "example-category",
"thread-id" : "my conversation blah blah"
}
"custom-field" : "some value",
}
这会通过threadIdentifier
填充您的通知内容扩展程序中可访问的UNNotificationContent
对象的notification.request.content.threadIdentifier
属性。
通过设置此"thread-id"
值,表示内容扩展程序的didReceive(_:)
方法将多次显示。首先扩展通知,然后在新通知到达时使用相同的"thread-id"
值。
我认为(希望)一旦iOS 10正式发布,这将被添加到官方文档中。