iPhone:每日本地通知

时间:2012-07-03 01:39:29

标签: ios objective-c iphone notifications uilocalnotification

我正在尝试实施本地通知

这就是我设定的

    // 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推送一次通知。

怎么做?

由于

3 个答案:

答案 0 :(得分: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];

与所有与日期相关的代码一样,如果您的时区使用夏令时,请务必在切换到夏令时期间测试其工作原理。

答案 1 :(得分:3)

我猜你需要的是 NSDayCalendarUnit

您可以查看this回答。 here是另一个值得阅读的教程。

答案 2 :(得分: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];
    }