通知部分出错

时间:2014-01-02 12:58:05

标签: ios uilocalnotification

我正在处理项目的通知部分,在此我想要通知用户有关活动的声音通知。我正在使用的代码如下:

-(void) scheduleNotificationForDate {

       UILocalNotification *localNotif = [[UILocalNotification alloc] init];
       if (localNotif == nil)
       return;
       NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
       NSDateComponents *dateParts = [[NSDateComponents alloc] init];
       [dateParts setHour:18];
       [dateParts setMinute:20];
       [dateParts setSecond:00];
       NSDate *sDate = [calendar dateFromComponents:dateParts];
       NSLog(@"date :  %@", sDate);
       localNotif.fireDate = sDate;
       localNotif.timeZone = [NSTimeZone defaultTimeZone];
       localNotif.alertAction = NSLocalizedString(@"View Details", nil);
       localNotif.alertBody = @"Hello Testing";
       localNotif.soundName = UILocalNotificationDefaultSoundName;
       [[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
       NSLog(@"notification started");
   }

在此代码的帮助下,我收到了我的设备上的书面通知,但在收到通知时我没有收到任何警报声。 请查看代码并尝试找到我的错误。你的帮助会非常明显。

3 个答案:

答案 0 :(得分:2)

看看你的控制台。

date :  0001-01-01 17:26:32 +0000

您已安排过去约2000年的通知,因为您没有指定年,月和日的组件。设置过去的fireDate意味着立即发送通知。

如果您想在18:30安排今天的通知,您可以执行以下操作:

// get year, month and day components from current time
NSDateComponents *dateParts = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:[NSDate date]];
[dateParts setHour:18];
[dateParts setMinute:20];
[dateParts setSecond:00];

答案 1 :(得分:0)

如果您的应用处于活动状态,它将不会发出警报声,将其置于后台并进行测试。

注意:确保您的系统音量已打开。

答案 2 :(得分:0)

您可能在“设置/通知中心”中禁用了此应用的通知声音吗?