2012-07-03 2 views
9

Я пытаюсь реализовать местное уведомление оiPhone: Ежедневные местные уведомления

Это то, что я поставил

// 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:00.

Как это сделать?

Благодаря

ответ

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]; 

Here are the Apple NSDateComponents API docs

А потом, когда вы добавляете даты уведомления, установите интервал повтора на один день:

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

Как весь код, связанный с датой, не забудьте проверить, как это работает во время перехода на летнее время, если ваш часовой пояс использует летнее время.

+0

На консоли я попытался найти дату огня, которая является «2012-07-03 00:30:00 +0000», я не уверен, будет ли этот огонь каждый день? – iscavengers

+0

@iscavengers, он будет срабатывать каждый день, если вы установите интервал повтора на 'kCFCalendarUnitDay', как я показал в коде выше – Nate

+0

, как это будет переведено в SWIFT? –

3

Я думаю, что вам нужно NSDayCalendarUnit.

Вы можете проверить ответ this. И here - еще один учебник, который стоит прочитать.

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]; 
    } 
Смежные вопросы