9

ローカル通知を実装しようとしています

これは私が設定したものです

    // Current date
    NSDate *date = [NSDate date]; 

    // Add one minute to the current time
    NSDate *dateToFire = [date dateByAddingTimeInterval:20];

    // Set the fire date/time
    [localNotification setFireDate:dateToFire];
    [localNotification setTimeZone:[NSTimeZone defaultTimeZone]];

20の代わりに、プッシュを開始するために一定の時間(毎日)を置きたいです。

例:午前6時ごとに通知ポップアップをプッシュしたい。

どうすればそれができますか?

ありがとう

4

3 に答える 3

27

NSDate発火日(時刻)となるオブジェクトを適切に作成する必要があります。を使用する代わりに、次の[NSDate dateByAddingTimeInterval: 20]ようなものを使用します。

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay: 3];
[components setMonth: 7];
[components setYear: 2012];
[components setHour: 6];
[components setMinute: 0];
[components setSecond: 0];
[calendar setTimeZone: [NSTimeZone defaultTimeZone]];
NSDate *dateToFire = [calendar dateFromComponents:components];

これがAppleNSDateComponentsAPIドキュメントです

次に、通知に日付を追加するときに、繰り返し間隔を1日に設定します。

[localNotification setFireDate: dateToFire];
[localNotification setTimeZone: [NSTimeZone defaultTimeZone]];
[localNotification setRepeatInterval: kCFCalendarUnitDay];

すべての日付関連コードと同様に、タイムゾーンで夏時間を使用している場合は、夏時間への切り替え中にこれがどのように機能するかを必ずテストしてください。

于 2012-07-03T03:28:29.253 に答える
3

必要なのはNSDayCalendarUnitだと思います。

You can check this answer. And here is another tutorial worth reading.

于 2012-07-03T03:28:41.083 に答える
1
 NSDate *alertTime = [[NSDate date] dateByAddingTimeInterval:10];
    UIApplication* app = [UIApplication sharedApplication];

    UILocalNotification* notifyAlarm = [[[UILocalNotification alloc] init] autorelease];
    if (notifyAlarm)
    {
        notifyAlarm.fireDate = alertTime;
        notifyAlarm.timeZone = [NSTimeZone defaultTimeZone];
        notifyAlarm.repeatInterval = 0;
        notifyAlarm.soundName = @"Glass.aiff";
        notifyAlarm.alertBody = @"Staff meeting in 30 minutes";

        [app scheduleLocalNotification:notifyAlarm];
    }
于 2013-07-09T09:12:19.790 に答える