公式ドキュメントを参照。
26ページから(特に28ページ冒頭)を要チェック。
引用----------
リスト 2-7 通知アクションを定義するコード例
UIMutableUserNotificationAction *acceptAction =
[[UIMutableUserNotificationAction alloc] init];
// Define an ID string to be passed back to your app when you handle the action
acceptAction.identifier = @"ACCEPT_IDENTIFIER";
// Localized string displayed in the action button
acceptAction.title = @"Accept";
// If you need to show UI, choose foreground
acceptAction.activationMode = UIUserNotificationActivationModeBackground;
// Destructive actions display in red
acceptAction.destructive = NO;
// Set whether the action requires the user to authenticate
acceptAction.authenticationRequired = NO;
リスト 2-8 アクションをカテゴリにまとめるコード例
// First create the category
UIMutableUserNotificationCategory *inviteCategory = [[UIMutableUserNotificationCategory alloc] init];
// Identifier to include in your push payload and local notification
inviteCategory.identifier = @"INVITE_CATEGORY";
// Add the actions to the category and set the action context
[inviteCategory setActions:@[acceptAction, maybeAction, declineAction] forContext:UIUserNotificationActionContextDefault];
// Set the actions to present in a minimal context
[inviteCategory setActions:@[acceptAction, declineAction]
forContext:UIUserNotificationActionContextMinimal];
リスト 2-9 通知カテゴリを登録するコード例
NSSet *categories = [NSSet setWithObjects:inviteCategory, alarmCategory, ...
UIUserNotificationSettings *settings =
[UIUserNotificationSettings settingsForTypes:types categories:categories];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
リスト 2-11 ローカル通知に用いるアクションのカテゴリを定義するコード例
UILocalNotification *notification = [[UILocalNotification alloc] init];
...
notification.category = @"INVITE_CATEGORY";
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
引用ここまで-------------
つまり
まずアクションを作成する。
UIUserNotificationActionクラスidentifier
title
activationMode
authenticationRequired
destructive
などの設定をする。
通知において、ひとつのボタンの操作に対応。
次に、アクションをまとめてカテゴリーを作る。
UIMutableUserNotificationCategoryカテゴリーはアクションの配列を格納し、識別子を持つ。
ひとつの通知におけるビューがこれで作られる。
カテゴリーは別に1アプリ1つではない。通知の種類によっていくらでもカテゴリーは作れる。
ただし、コンテキストによって2種類の配列を登録する必要がある。
UIUserNotificationActionContextDefault …これはモーダルビューで見た時
UIUserNotificationActionContextMinimal …これはロック画面で見た時。こちらは最大2つしかアクションを持てない
さらに、カテゴリーをセッティングにまとめる。
UIUserNotificationSettingsセッティングは、通知種別(アラート、バッジ、サウンドなど)を持つ
そして、このセッティングをアプリケーションに登録する。
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
これにて通知が仕えるようになる。
実際に使うためには、通知をスケジューリング登録する。
UILocalNotification *notification = [[UILocalNotification alloc] init];
...
notification.category = @"INVITE_CATEGORY";
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
PR