3

2 つの をスケジュールUILocalNotificationし、両方をまったく同じ fireDate で起動するように設定したとします。次に、デバイス (これはシミュレーターのバグではありません) で fireDateapplication:didReceiveLocalNotification:が 4 回 (通知ごとに 2 回) 発生します。これは既知のバグですか? 私はそれについての情報を見つけることができなかったからです。

4

2 に答える 2

1

http://bugreport.apple.comにバグを報告してください。

そうは言っても、シミュレーターにバグがある一方で、デバイスにもバグがあるようです。

この SO の質問に関するコメントと回答を参照してください:ローカル通知 "didReceiveLocalNotification" が 2 回呼び出されます

于 2012-07-11T11:09:29.017 に答える
0

これを試してみてください。私のアプリケーションで動作します:

-(IBAction)setRemind:(id)sender{

NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];

NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];

[dateFormatter2 setDateFormat:@"YYYY-MM-dd HH:mm:ss"];

//Gets our picker
NSDate *selectedTime = [datePicker date];
strDate2 = [dateFormatter2 stringFromDate:selectedTime];
NSDate *Date=[dateFormatter2 dateFromString:strDate2];

NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:Date];

// Set up the fire time
NSDateComponents *dateComp = [[NSDateComponents alloc] init];
[dateComp setDay:[dateComponents day]];
[dateComp setMonth:[dateComponents month]];
[dateComp setYear:[dateComponents year]];
[dateComp setHour:9];
[dateComp setMinute:00];
[dateComp setSecond:00];
[dateComp release];

NSDate *date = [calendar dateFromComponents:dateComp];
[self scheduleAlarmForDate:date message:txtDescri.text];

}


-(IBAction)scheduleAlarmForDate:(NSDate*)date message:(NSString*)msg
{

//====== TO SEE OLD NOTIFI=======
UIApplication *Ap = [UIApplication sharedApplication];
NSArray *arr = [Ap scheduledLocalNotifications];
NSLog(@"Old Notifications :>> %@",arr);

UIApplication* app = [UIApplication sharedApplication];
UILocalNotification *alarm = [[UILocalNotification alloc] init];

// Create a new notification
alarm.fireDate = date;
NSLog(@"fireDate IS >> %@", alarm.fireDate);
alarm.timeZone = [NSTimeZone localTimeZone];
alarm.alertBody = msg;
NSLog(@"msg IS >> %@",msg);
alarm.alertAction = @"Show";
alarm.repeatInterval = 0;
alarm.soundName = UILocalNotificationDefaultSoundName;
alarm.applicationIconBadgeNumber = 1;
[app scheduleLocalNotification:alarm];
 [alarm release];
} 

お役に立てば幸いです。

于 2012-07-11T11:13:17.013 に答える