iOS8 ローカル通知の実装についてメモ。

ローカル通知を実装することになったので、調べた事をメモ。
なにやらiOS8になってから少し仕様が変わったっぽい。

【環境】
・xcode6

いろんなサイトを巡ってみると、
ふむふむ。

なにやらローカル通知には「UILocalNotification」というのを使うらしい。

単純に、通知だけやればいい時は下のコードのように書けばいいらしい。
コードは参考サイトより引用させてもらいました。

// インスタンス生成
UILocalNotification *notification = [[UILocalNotification alloc] init];
// 5分後に通知をする(設定は秒単位)
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:(60 * 5)];
// タイムゾーンの設定
notification.timeZone = [NSTimeZone defaultTimeZone];
// 通知時に表示させるメッセージ内容
notification.alertBody = @"5分経ちました";
// 通知に鳴る音の設定
notification.soundName = UILocalNotificationDefaultSoundName;
// 通知の登録
[[UIApplication sharedApplication] scheduleLocalNotification:notification];

はい。

でもこれだけ書いても通知はされません。

ローカル通知を動作させるにはユーザにローカル通知を動作させる許可を得る必要があるみたいです。

AppDelegate.mにある既存のメソッドを以下のように書き換えることでアプリが起動した時にユーザに通知を動作させるかどうかユーザに確認するアラートが出るようになり、ユーザに許可されるとローカル通知が動作するようになるみたい。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) {
      [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeSound categories:nil]];
  }

  return YES;
}

これでローカル通知が利用可能になりました。

細かな設定も出来るみたいですが、とりあえずこれでローカル通知は利用できるのでここまで。

【参考にしたサイト】
iOSのローカル通知・UILocalNotificationの設定まとめ