iOS 10如何为远程通知设置UNotificationContent threadIdentifier

时间:2016-08-30 08:40:24

标签: ios apple-push-notifications unnotificationrequest

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提供的有关如何设置此内容的任何文档。有人可以帮忙吗?

1 个答案:

答案 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正式发布,这将被添加到官方文档中。