Одно из нововведений 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'
}
}
(учитывая ограничения на размер полезной нагрузки, имеет смысл указать категорию уведомления с не очень длинным идентификатором; но поскольку это обучающий пример, используется именно он моя_категория ), мы будем получать уведомления следующего типа.
На экране блокировки:
и после смены:
В области уведомлений:
И Центр уведомлений:
Обработка нажатий кнопок
Чтобы обрабатывать нажатия кнопок, вам следует определить метод - 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
-
Зиндер Лев Рафаилович
19 Oct, 24 -
Исследовательский Отчет
19 Oct, 24 -
Об Использовании Ссылок Для Запуска Функций.
19 Oct, 24 -
Айфон Нано
19 Oct, 24