2

毎日午前 10:00 にアプリケーションで UILocalNotification をスケジュールしています。

これには次のコードを使用しました

 NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar] ;

NSDateComponents *componentsForReferenceDate =

[calendar components:(NSDayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit ) fromDate:[NSDate date]];

[componentsForReferenceDate setDay:10] ;
[componentsForReferenceDate setMonth:10] ;
[componentsForReferenceDate setYear:2013] ;

NSDate *referenceDate = [calendar dateFromComponents:componentsForReferenceDate] ;

// set components for time 10:00 a.m.

NSDateComponents *componentsForFireDate =

[calendar components:(NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit| NSSecondCalendarUnit ) fromDate: referenceDate];

[componentsForFireDate setHour:10] ;
[componentsForFireDate setMinute:0] ;
[componentsForFireDate setSecond:0] ;

NSDate *fireDateOfNotification = [calendar dateFromComponents: componentsForFireDate];

// Create the notification

UILocalNotification *notification = [[UILocalNotification alloc]  init] ;

notification.fireDate = fireDateOfNotification ;
notification.timeZone = [NSTimeZone localTimeZone] ;
notification.alertBody = [NSString stringWithFormat: @"Good Morning! Have a great day!"] ;
notification.alertAction = @"go back";
notification.userInfo= [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Some information"] forKey:@"information"];
notification.repeatInterval = NSDayCalendarUnit ;
notification.soundName = UILocalNotificationDefaultSoundName;
notification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;
[[UIApplication sharedApplication] scheduleLocalNotification:notification] ;

とてもうまくいっています。しかし今は、UILocalNotification を 1 日おきと 3 日おきにスケジュールしたいと考えています。これを行う方法は?

4

2 に答える 2

3

あなたはUILocalNotificationのrepeatTimeIntervalのカスタマイズを行うことができません..あなたと同じような質問がたくさんあり、数日前にも同じ質問がありましたが、解決策が見つからないので、それとの戦いをやめてください.

からの繰り返し時間間隔を使用する必要があります

カレンダー単位 日や月などのカレンダー単位を指定します。

enum {
   NSEraCalendarUnit = kCFCalendarUnitEra,
   NSYearCalendarUnit = kCFCalendarUnitYear,
   NSMonthCalendarUnit = kCFCalendarUnitMonth,
   NSDayCalendarUnit = kCFCalendarUnitDay,
   NSHourCalendarUnit = kCFCalendarUnitHour,
   NSMinuteCalendarUnit = kCFCalendarUnitMinute,
   NSSecondCalendarUnit = kCFCalendarUnitSecond,
   NSWeekCalendarUnit = kCFCalendarUnitWeek,
   NSWeekdayCalendarUnit = kCFCalendarUnitWeekday,
   NSWeekdayOrdinalCalendarUnit = kCFCalendarUnitWeekdayOrdinal,
   NSQuarterCalendarUnit = kCFCalendarUnitQuarter,
   NSWeekOfMonthCalendarUnit = kCFCalendarUnitWeekOfMonth,
   NSWeekOfYearCalendarUnit = kCFCalendarUnitWeekOfYear,
   NSYearForWeekOfYearCalendarUnit = kCFCalendarUnitYearForWeekOfYear
   NSCalendarCalendarUnit = (1 << 20),
   NSTimeZoneCalendarUnit = (1 << 21),
};
typedef NSUInteger NSCalendarUnit;

上記はAppleのドキュメントから見つけることができます。この質問も読んでください...

ローカル通知の繰り返し間隔をカスタム時間間隔に設定するには?

詳細については、最大64のローカル通知のみをスケジュールしたため、カスタムの繰り返し時間間隔を実行するために複数の通知を作成する計画がある場合は注意してください.

于 2013-10-11T10:41:34.680 に答える
0

次の間隔repeatIntervalしか利用できないため、これを単純に行うことはできません。

私が考えることができる解決策の1つは、毎日(なしでrepeatInterval)個別の通知を設定することです。しかし、このようにすると、64 個の通知制限に遭遇する可能性があります。

于 2013-10-11T10:31:50.950 に答える