UILocalNotification(ローカル通知)は通知したいNSDate(日付)を設定すれば、その時間にアプリの通知を発生させることが出来ます。
毎週繰り返す設定もあるので、指定したNSDateを毎週通知することも出来ます。
バナー
ダイアログ
サンプルコード
指定の時間と曜日を毎週通知するローカル通知のサンプルです。
以前投稿した指定日以降の1週間を曜日指定で取得するメソッドを使用しています。
ViewController.m
- (void)viewDidLoad
{
// 月 水 金 のNSDateを取得 (時間はself.datePicker.dateの時間を使用します)
NSArray *oneweekDate = [self.datePicker.date oneWeekDateWithEnableWeekdayType:YSWeekdayTypeSunday | YSWeekdayTypeTuesday | YSWeekdayTypeFriday];
// 取得した日付を順次ローカル通知に登録
for (NSDate *date in oneweekDate) {
[self configureNotificationWithDate:date];
}
}
- (void)configureNotificationWithDate:(NSDate*)date
{
UILocalNotification *notification = [[UILocalNotification alloc] init];
// 通知する日付
[notification setFireDate:date];
// 使用するカレンダー
notification.repeatCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
// 毎週繰り返す
notification.repeatInterval = NSWeekCalendarUnit;
// タイムゾーン
[notification setTimeZone:[NSTimeZone localTimeZone]];
// 通知する本文
[notification setAlertBody:@"通知の本文です"];
// 通知音(デフォルトを指定)
[notification setSoundName:UILocalNotificationDefaultSoundName];
// アラートタイプ(ダイアログ)の通知の場合に使用する決定ボタンの文字列
[notification setAlertAction:@"アプリを起動"];
// ローカル通知の登録
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
結果
self.datePicker.date が 3/2 8:00 だとしたら、毎週月、水、金の 8:00 にローカル通知がされます。