2012-07-03 34 views
9

Tôi cố gắng để thực hiện thông báo địa phươngiPhone: thông báo địa phương Daily

Đây là những gì tôi đã thiết

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

Thay vì 20, tôi muốn đặt một thời gian nhất định (hàng ngày) để bắt đầu đẩy.

Ví dụ: Tôi muốn đẩy thông báo bật lên vào lúc 6:00 sáng.

Làm cách nào để thực hiện điều đó?

Cảm ơn

Trả lời

27

Bạn chỉ cần tạo một đối tượng đúng NSDate là ngày lửa của bạn (thời gian). Thay vì sử dụng [NSDate dateByAddingTimeInterval: 20], sử dụng một cái gì đó như thế này:

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

Và sau đó khi bạn thêm ngày để thông báo, thiết lập khoảng thời gian lặp lại để một ngày nào đó:

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

Như với tất cả các ngày liên quan đến mã, hãy chắc chắn để kiểm tra như thế nào này hoạt động trong quá trình chuyển sang ánh sáng ban ngày tiết kiệm thời gian, nếu múi giờ của bạn sử dụng ánh sáng ban ngày tiết kiệm thời gian.

+0

trên bảng điều khiển, tôi đã cố gắng tìm ngày hết hạn, "2012-07-03 00:30:00 +0000" tôi không chắc chắn, điều này sẽ kích hoạt hàng ngày? – iscavengers

+0

@iscavengers, Nó sẽ kích hoạt mỗi ngày nếu bạn đặt khoảng thời gian lặp lại thành 'kCFCalendarUnitDay', như tôi đã hiển thị trong mã ở trên – Nate

+0

cách này sẽ được dịch sang SWIFT? –

3

Tôi đoán những gì bạn cần là NSDayCalendarUnit.

Bạn có thể kiểm tra this câu trả lời. Và here là một hướng dẫn đáng đọc khác.

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]; 
    } 
Các vấn đề liên quan