1

Я внедрил динамическое и статическое уведомление в текущем приложении часов. Даже я могу получить событие в методе - (void)handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)remoteNotification в случае любого действия в динамическом уведомлении.Как получить полезную нагрузку в WatchOS2?

  • Теперь мое беспокойство заключается в том, как получить какое-либо событие/обратный вызов при прослушивании уведомления, которое фактически открывает приложение WatchOS?
  • Как я могу получить полезную нагрузку Push Notification в любом методе при запуске приложения, нажав уведомление?

Я использую следующий метод для установки интерфейса в случае интерфейса динамического уведомления. но это не относится к Статическому.

- (void)didReceiveRemoteNotification:(NSDictionary *)remoteNotification withCompletion:(void (^)(WKUserNotificationInterfaceType))completionHandler { 
    NSLog(@"%@",remoteNotification); 
    completionHandler(WKUserNotificationInterfaceTypeCustom); 
} 

РЕДАКТИРОВАТЬ

Я добавил следующий код в AppDelegate, чтобы зарегистрироваться для получения уведомлений.

UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound); 
     UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil]; 
     [application registerUserNotificationSettings:settings]; 
     [application registerForRemoteNotifications]; 

ответ

1

Я хотел бы посмотреть в следующий метод делегата, с учетом вашего расширения делегата Сторожевой приложения, для ответа на оба ваши вопросы:

- (void)handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)remoteNotification 

периметров:

  • Идентификатор: равен «" (пустой NSString), если приложение запущено без нажатия одной из кнопок уведомлений или равно идентификатору, который вы установили на кнопку действия уведомления, если пользователь запускает приложение, нажав одну из кнопок действия уведомления.
  • remoteNotification: полезная информация, прилагаемая к удаленному уведомлению. Он находится в формате словаря, и вы можете получить полезную нагрузку от этого объекта.

Ответ на вопрос 1: Когда пользователь запускает приложение, если реализован, этот метод будет вызываться и позволяют перенастроить приложение на основе выбора пользователя.

Ответ на вопрос 2: Полезная нагрузка имеет традиционную структуру словаря полезной нагрузки Apple Notification. Ключ aps содержит информацию alert и информацию badge. Затем ваши пользовательские данные привязаны к полному словарю. Чтобы получить доступ к нему, если вы настраиваете словарь полезной нагрузки с помощью ключа «testKey», вы можете получить к нему доступ, используя remoteNotification[@"testKey"].

Update

Согласно Apple, статическое уведомление «не должно включать в себя элементы управления, таблицы, карты или другие интерактивные элементы,» потому что это может быть использовано только в качестве запасного варианта, если интерактивное уведомление не может быть запущен своевременно. Источник: Apple watchOS Developer Library.

Источники и/или Дополнительные ресурсы:

Apple Developer: WK InterfaceController Class Reference

Apple Developer: The Remote Notification Payload

Apple Developer: Notification Essentials for watchOS

+0

В моем случае этот метод не получает вызов, нажав на уведомления. – Mrug

+0

@Mrug Зарегистрировали пользовательские настройки уведомлений, вызвав UIApplication.sharedApplication(). RegisterUserNotificationSettings (настройки), как указано в этом документе https://developer.apple.com/library/ios/documentation/General/Conceptual/WatchKitProgrammingGuide/ BasicSupport.html # // apple_ref/DOC/UID/TP40014969-CH18-SW1? –

+0

Я добавил код в appdelegate для регистрации. также опубликовали его как «Редактировать в вопросе». – Mrug