2012-02-06 32 views
6

Tôi đang cố gắng lặp lại thông báo cục bộ sau mỗi 30 phút nhưng mã của tôi không hoạt động tốt ... Tôi sẽ biết ơn nếu bạn giúp tôi và tìm giải pháp, đây là mã của tôi:Có vấn đề với lặp lại mỗi 30 phút

UILocalNotification *reminderNote = [[UILocalNotification alloc]init]; 
reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 30]; 
reminderNote.repeatInterval = NSHourCalendarUnit; 
reminderNote.alertBody = @"some text"; 
reminderNote.alertAction = @"View"; 
reminderNote.soundName = @"sound.aif"; 
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote]; 

Trả lời

13

firedate đặt thời gian thông báo kích hoạt lần đầu tiên và repeatInterval là khoảng thời gian giữa các lần lặp lại thông báo. Vì vậy, mã trong câu hỏi lên lịch thông báo để kích hoạt 30 phút (60 * 30 giây) kể từ bây giờ và sau đó lặp lại mỗi giờ. Thật không may, bạn chỉ có thể lên lịch các thông báo lặp lại vào các khoảng thời gian chính xác được xác định bởi NSCalendar constants: ví dụ: mỗi phút, mỗi giờ, mỗi ngày, mỗi tháng, nhưng không được tính theo bội số của các khoảng thời gian đó.

May mắn thay, để nhận được thông báo sau mỗi 30 phút, bạn chỉ có thể lên lịch hai thông báo: một thông báo ngay bây giờ, 30 phút từ bây giờ và lặp lại cả hai giờ mỗi giờ. Giống như vậy:

UILocalNotification *reminderNote = [[UILocalNotification alloc]init]; 
reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 30]; 
reminderNote.repeatInterval = NSHourCalendarUnit; 
reminderNote.alertBody = @"some text"; 
reminderNote.alertAction = @"View"; 
reminderNote.soundName = @"sound.aif"; 
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote]; 

reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 60]; 
[[UIApplication sharedApplication] scheduleLocalNotification:reminderNote]; 
+0

cảm ơn bạn và cứ mỗi 1 giờ hoặc 2 hoặc 3 Tôi có nên làm như thế này không? ví dụ cứ sau 1 giờ: 'remindNote.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60 * 60]; remindNote.repeatInterval = NSHourCalendarUnit; 'và ngày lửa thứ hai' remindNote.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60 * 60]; ' –

+0

Cứ mỗi 1 giờ, bạn chỉ cần lên lịch một thông báo. Chỉ cần lấy mã trong câu trả lời của tôi và thoát khỏi hai hàng cuối cùng. Nếu cần, hãy thay đổi 'fireDate' để nó tương ứng với lần đầu tiên khi bạn muốn thông báo kích hoạt. – yuji

+0

khoảng 2 giờ hoặc 3 giờ thì sao? đúng không ? : 'remindNote.fireDate = [NSDate dateWithTimeIntervalSinceNow: 60 * 60 * 2]; [[UIApplication sharedApplication] scheduleLocalNotification: remindNote]; ' –

Các vấn đề liên quan