2014-09-19 2 views
19

Я разрабатываю приложение iOS8, которое поддерживает интерактивное уведомление. Но у меня нет ясности в функциях, поддерживаемых интерактивным уведомлением, и о том, как отправлять/обрабатывать интерактивные уведомления. Если кто-нибудь может привести пример, это будет очень полезно для меня.Как реализовать iOS8 Интерактивное уведомление

Заранее спасибо :)

ответ

35
  1. Прежде всего, необходимо создать уведомление действий.
  2. Во-вторых, вам нужно создать категорию уведомлений и установить его действия. Вы можете установить для двух контекстов. UIUserNotificationActionContextDefault или UIUserNotificationActionContextMinimal
  3. В-третьих необходимо создать настройку уведомлений и назначить вышеуказанные категории
  4. Четвертый шаг будет заключаться в создании местного уведомления, и назначить ему идентификатор категории.

UIMutableUserNotificationAction *notificationAction1 = [[UIMutableUserNotificationAction alloc] init]; 
notificationAction1.identifier = @"Accept"; 
notificationAction1.title = @"Accept"; 
notificationAction1.activationMode = UIUserNotificationActivationModeBackground; 
notificationAction1.destructive = NO; 
notificationAction1.authenticationRequired = NO; 

UIMutableUserNotificationAction *notificationAction2 = [[UIMutableUserNotificationAction alloc] init]; 
notificationAction2.identifier = @"Reject"; 
notificationAction2.title = @"Reject"; 
notificationAction2.activationMode = UIUserNotificationActivationModeBackground; 
notificationAction2.destructive = YES; 
notificationAction2.authenticationRequired = YES; 

UIMutableUserNotificationAction *notificationAction3 = [[UIMutableUserNotificationAction alloc] init]; 
notificationAction3.identifier = @"Reply"; 
notificationAction3.title = @"Reply"; 
notificationAction3.activationMode = UIUserNotificationActivationModeForeground; 
notificationAction3.destructive = NO; 
notificationAction3.authenticationRequired = YES; 

UIMutableUserNotificationCategory *notificationCategory = [[UIMutableUserNotificationCategory alloc] init]; 
notificationCategory.identifier = @"Email"; 
[notificationCategory setActions:@[notificationAction1,notificationAction2,notificationAction3] forContext:UIUserNotificationActionContextDefault]; 
[notificationCategory setActions:@[notificationAction1,notificationAction2] forContext:UIUserNotificationActionContextMinimal]; 

NSSet *categories = [NSSet setWithObjects:notificationCategory, nil]; 

UIUserNotificationType notificationType = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert; 
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:notificationType categories:categories]; 

[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; 

UILocalNotification* localNotification = [[UILocalNotification alloc] init]; 
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10]; 
localNotification.alertBody = @"Testing"; 
localNotification.category = @"Email"; // Same as category identifier 
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 
+0

Большое спасибо @Sourav Гупта. Но как насчет удаленного уведомления? –

+2

Тот же код будет работать и для удаленного уведомления. Вам просто нужно добавить ключ категории в полезную нагрузку push. Ключ категории должен иметь то же значение идентификатора, которое вы определяете в своем коде. –

+0

Извините, Sourav Я не понимаю эту концепцию. Не могли бы вы немного объяснить свой ответ? Когда я отправляю удаленное уведомление, полезная нагрузка должна содержать все детали? –

11

Я хотел бы выразить ответ Sourav Гупты немного. После того, как вы сделали то, что объяснил Сурав, вы должны реализовать делегатов для получения действий push-уведомлений. Делегаты,

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler { 

// Handle actions of local notifications here. You can identify the action by using "identifier" and perform appropriate operations 

    if(completionHandler != nil) //Finally call completion handler if its not nil 
     completionHandler(); 
} 

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler { 

// Handle actions of remote notifications here. You can identify the action by using "identifier" and perform appropriate operations 

    if(completionHandler != nil) //Finally call completion handler if its not nil 
     completionHandler(); 
} 

Вы можете обратиться удаленный образец полезной нагрузки уведомление здесь iOS8 Push notification Payload

Смежные вопросы