Поддержка Интерактивных Уведомлений Ios 8 В Приложении.

Одно из нововведений iOS 8 — интерактивные уведомления.

К таким уведомлениям можно назначить до четырех действий, каждое из которых будет представлено отдельной кнопкой внизу баннера с текстом уведомления.

Это дает пользователю дополнительные возможности отвечать на сообщения без (обычно) активации приложения.

Давайте посмотрим, как добавить поддержку такого функционала.



Определение действий

Во-первых, необходимо определить действия, которые можно выполнить над уведомлением.

Это делается с использованием экземпляров класса UImutableUserNotificationAction :

  
  
  
  
  
  
  
  
   

UIMutableUserNotificationAction *action_like = [[UIMutableUserNotificationAction alloc] init]; action_like.identifier = @"Like"; action_like.title = NSLocalizedString(@"Like",nil); action_like.activationMode = UIUserNotificationActivationModeBackground; action_like.destructive = NO; action_like.authenticationRequired = NO;

?Экземпляры этого класса содержат следующие свойства: идентификатор — строка идентификатора действия.

Это свойство будет использоваться позже, чтобы отличать действия друг от друга.

заголовок — заголовок, который будет отображаться на кнопке.

Режим активации — определяет, можно ли выполнить действие в фоновом режиме или необходимо активировать приложение.

разрушительный - определяет, является ли действие разрушительным.

Если да, то кнопка такого действия будет подсвечена (обычно красным).

необходима аутентификация — определяет, требуется ли аутентификация пользователя для выполнения действия.

Пример определения деструктивного действия, за которое будет активирована программа:

UIMutableUserNotificationAction *action_del = [[UIMutableUserNotificationAction alloc] init]; action_del.identifier = @"Delete"; action_del.title = NSLocalizedString(@"Delete",nil); action_del.activationMode = UIUserNotificationActivationModeForeground; action_del.destructive = YES; action_del.authenticationRequired = NO;



Создание категории и регистрация параметров обработки уведомлений

Во-вторых, мы должны создать категорию для наших уведомлений, используя экземпляр класса UImutableUserNotificationCategory :

UIMutableUserNotificationCategory *category= [[UIMutableUserNotificationCategory alloc] init]; category.identifier = @"my_category"; [category setActions:@[action_like, action_del] forContext:UIUserNotificationActionContextDefault]; NSSet *categories = [NSSet setWithObjects:category, nil];

Идентификатор категории должен быть отправлен в качестве ключа.

категория В пьялоад 'e push-уведомления или свойства категория местное уведомление.

Аргумент forContext указывает количество разрешенных действий для уведомления.

Постановка на учет:

UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:categories]; [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];



Отправка уведомления

Отправив следующее уведомление:

{'aps': {'alert': 'A sample of interactive notification text', 'category': 'my_category', 'some_id': 'my_id' } }

(учитывая ограничения на размер полезной нагрузки, имеет смысл указать категорию уведомления с не очень длинным идентификатором; но поскольку это обучающий пример, используется именно он моя_категория ), мы будем получать уведомления следующего типа.

На экране блокировки:

Поддержка интерактивных уведомлений iOS 8 в приложении.
</p><p>

и после смены:

Поддержка интерактивных уведомлений iOS 8 в приложении.
</p><p>

В области уведомлений:

Поддержка интерактивных уведомлений iOS 8 в приложении.
</p><p>

И Центр уведомлений:

Поддержка интерактивных уведомлений iOS 8 в приложении.
</p><p>



Обработка нажатий кнопок

Чтобы обрабатывать нажатия кнопок, вам следует определить метод

- application:handleActionWithIdentifier:forLocalNotification:completionHandler:

для обработки локальных уведомлений.

И

- application:handleActionWithIdentifier:forRemoteNotification:completionHandler:

для обработки push-уведомлений.

Вторым аргументом этих методов является идентификатор действия, который мы ранее указали как:

action_del.identifier = @"Delete";

Последний аргумент — это блок, который необходимо Обязательно вызов после обработки действия:

- (void) application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler { NSLog(@"NOTIFICATION IDENT: %@ USER INFO: %@", identifier, userInfo); completionHandler(); }

Обратите внимание, что нажав кнопку ' Нравиться ' не активирует приложение.

В отличие от нажатия ' Удалить '.



Заключение

Таким образом, «легким движением руки» (в) вы можете добавить в приложение дополнительный функционал, повысив его привлекательность для пользователя (в любом случае постарайтесь повысить его привлекательность).

Теги: #iOS #ui #Интерактивные уведомления #уведомления #взаимодействие с пользователем #разработка iOS

Вместе с данным постом часто просматривают: