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:00 推送通知弹出。

怎么可能呢?

谢谢

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

这是 Apple NSDateComponents API 文档

然后当您将日期添加到通知中时,将重复间隔设置为一天:

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

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

于 2012-07-03T03:28:29.253 回答
3

我想你需要的是NSDayCalendarUnit

你可以检查这个答案。这是另一个值得一读的教程

于 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 回答