<ぜんつう>ネトゲとかソシャゲとか、雑記。
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
iOS8から通知系がボタンやアクションの拡張がされているので、そのままの状態だとLocalNotificationが使えなくなるようです。
んで、iOS8から追加された通知用のカテゴリを実装して対応する必要があります。//OSVer判定マクロ
#define SYSVER_OVER(x) ([[[UIDevice currentDevice] systemVersion] compare:x options:NSNumericSearch] != NSOrderedAscending)
//アプリ起動時に通知タイプとカテゴリを作っておく
//毎回登録する必要なし
if (SYSVER_OVER(@"8.0")) {
// 通知のユーザー設定を登録
UIUserNotificationType types = UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound;
UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
// アクションの設定
UIMutableUserNotificationAction *acceptAction = [[UIMutableUserNotificationAction alloc] init];
acceptAction.identifier = @"COLTTO_LOCAL_NOTIFICATION"; //アクション設定の識別子:受信時の判定に使用
acceptAction.title = @"Accept"; //ボタンタイトル。一つのアクションだけだと表示されない
acceptAction.activationMode = UIUserNotificationActivationModeBackground; //アクション動作設定()
acceptAction.destructive = NO; //強調設定
acceptAction.authenticationRequired = NO; //ロック中に出すか?(beta6ではYES/NOどちらもまだ変わらないらしい)
// カテゴリ作成
UIMutableUserNotificationCategory *inviteCategory = [[UIMutableUserNotificationCategory alloc] init];
inviteCategory.identifier = @"INVITE_CATEGORY";
[inviteCategory setActions:@[acceptAction] forContext:UIUserNotificationActionContextDefault];
}
//通知を登録する際にiOS8以上ならカテゴリを指定する。
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
[localNotification setFireDate:date]; // 日付
[localNotification setTimeZone:[NSTimeZone defaultTimeZone]]; // タイムゾーン
[localNotification setSoundName:UILocalNotificationDefaultSoundName]; // 音
[localNotification setAlertAction:@"test"];
[localNotification setAlertBody:text];
if (SYSVER_OVER(@"8.0")) {
localNotification.category = @"INVITE_CATEGORY"; //カテゴリ名を指定して設定
}
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
COMMENT