Как использовать расширение службы уведомлений с UNNotification в iOS10
Apple вводит новые расширения с именами "UNNotificationServiceExtension", но как запустить его из push-уведомлений?
Я читал, что расширение службы обеспечивает сквозное шифрование для полезной нагрузки.
Какой ключ требуется для установки полезных данных push-уведомлений?
Как определить полезную нагрузку и как запустить расширение сервиса из push-уведомлений?
1 ответ
Позвольте мне сделать это шаг за шагом.
UNNotificationServiceExtension - Что это такое?
UNNotificationServiceExtension - это цель расширения приложения, которую вы связываете вместе со своим приложением с целью изменения push-уведомлений по мере их поступления на устройство перед его передачей пользователю. Вы можете изменить заголовок, подзаголовок, текст и дополнительно добавить вложения к push-уведомлению, либо загрузив его, либо воспользовавшись одним из комплектных приложений.
Как создать
Перейдите в Файл -> Создать -> Цель -> Расширение службы уведомлений и заполните детали
Какой ключ требуется для установки полезных данных push-уведомлений?
Вам нужно установить mutable-content
флаг для 1
запустить расширение службы. Кроме того, если content-available
установлен в 1
расширение службы не будет работать. Поэтому либо не устанавливайте его, либо устанавливайте на 0. (Редактировать: это не применимо. Вы можете установить или отменить content-available
флаг)
Как определить полезную нагрузку и как запустить расширение сервиса из push-уведомлений?
Создайте расширение, а затем соберите и запустите ваше приложение. Отправить push-уведомление с mutable-content
установлен в 1
,
Код
UNNotificationService предоставляет две функции:
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request
withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler;
- (void)serviceExtensionTimeWillExpire;
Первая функция срабатывает, когда push-уведомление принимается на устройстве и до того, как оно будет представлено пользователю. Ваш код внутри функции имеет возможность изменять содержимое push-уведомлений внутри этой функции.
Вы делаете это, изменяя bestAttemptContent
свойство вашего расширения, которое является экземпляром UNNotificationContent
и имеет свойства: title
, subtitle
, body
, attachments
и т.п.
Первоначальная полезная нагрузка удаленного уведомления доставляется через request.content
свойство параметра функции request
,
Наконец, вы отправляете ваш bestAttemptContent с помощью contentHandler:
self.contentHandler(self.bestAttemptContent);
У вас есть ограниченное время, чтобы сделать свои вещи в первом методе. В случае, если время истекает, ваш второй метод вызывается с наилучшей попыткой вашего кода.
Образец кода
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request
withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
// Modify the notification content here...
self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
self.contentHandler(self.bestAttemptContent);
}
Приведенный выше код добавляет [измененный] к исходному заголовку в полезной нагрузке PN.
Образец полезной нагрузки
{
"aps": {
"alert": {
"title": "Hello",
"body": "body.."
},
"mutable-content":1,
"sound": "default",
"badge": 1,
},
"attachment-url": ""
}
Обратите внимание, что attachment-url
ключ - это пользовательский ключ для ваших собственных задач, не распознаваемый iOS .
Расширение службы уведомлений очень полезно для загрузки контента из данных уведомлений и отображения в уведомлениях, таких как изображения и другой контент. Вы также можете использовать расширение службы уведомлений для выполнения некоторого кода, когда приложение находится в фоновом режиме или неактивно (убито).
Вот пошаговое руководство по использованию расширения службы уведомлений. А также вы получили демо от GitHub.