TL;DR: What key needs to be set in the APNs notification payload JSON to correspond to the threadIdentifier
property of the UNNotificationContent
object? e.g. the "category"
key corresponds to the categoryIdentifier
property.
iOS 10 introduces the Notification Content Extension
allowing us to present a view controller when a notification is expanded.
The view controller that we provide conforms to the UNNotificationContentExtension
protocol, that requires us to implement the didReceive(_:)
method.
The documentation for this method includes the following paragraph:
This method may be called multiple times while your view controller is visible. Specifically, it is called again when a new notification arrives whose threadIdentifier value matches the thread identifier of the notification already being displayed.
The threadIdentifier
property may be set in code for local notifications, but I don't know how to set it for remote notifications that are sent from the server to APNs.
The UNNotificationContent
documentation describes the property here: http://developer.apple.com/reference/usernotifications/unnotificationcontent
The following JSON includes the keys I've tried ("thread"
and "thread-identifier"
):
{
"aps" : {
"alert" : "Hello World!",
"sound" : "default",
"category" : "example-category",
"thread" : "example-thread",
"thread-identifier" : "example-thread-identifier"
}
"custom-field" : "some value",
}
I can't find any documentation from Apple about how to set this. Can anyone help?
I discovered from a contact at Apple that the correct key to populate this property is the "thread-id"
key.
So the JSON sent to APNs is as follows:
{
"aps" : {
"alert" : "Hello World!",
"sound" : "default",
"category" : "example-category",
"thread-id" : "my conversation blah blah"
}
"custom-field" : "some value",
}
This populates the threadIdentifier
property of the UNNotificationContent
object accessible in your Notification Content Extension via notification.request.content.threadIdentifier
.
By setting this "thread-id"
value, it means that the didReceive(_:)
method of your content extension will be multiple times. First when expanding the notification initially, and again whenever a new notification arrives with the same "thread-id"
value.
I assume (hope) this will be added to the official documentation once iOS 10 is officially released.
来源:https://stackoverflow.com/questions/39222652/ios-10-how-to-set-unotificationcontent-threadidentifier-for-remote-notification