2015-06-03 18 views
11

Tôi mới phát triển iOS, nhưng đã tạo ứng dụng và tôi đang cố gắng tạo thông báo hàng ngày trong một khoảng thời gian đã định. Hiện tại, thông báo thực hiện một lần cho ngày/giờ đã cho. Tôi không chắc chắn cách sử dụng phương thức repeatInterval để lên lịch hàng ngày. Phương pháp tốt nhất để lặp lại thông báo hàng ngày là gì? bất kỳ trợ giúp nào sẽ được đánh giá cao (Y).Lặp lại thông báo cục bộ hàng ngày vào một thời điểm đã đặt nhanh chóng

var dateComp:NSDateComponents = NSDateComponents() 
    dateComp.year = 2015; 
    dateComp.month = 06; 
    dateComp.day = 03; 
    dateComp.hour = 12; 
    dateComp.minute = 55; 
    dateComp.timeZone = NSTimeZone.systemTimeZone() 

    var calender:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
    var date:NSDate = calender.dateFromComponents(dateComp)! 

    var notification:UILocalNotification = UILocalNotification() 
    notification.category = "Daily Quote" 
    notification.alertBody = quoteBook.randomQuote() 
    notification.fireDate = date 
    notification.repeatInterval = 

    UIApplication.sharedApplication().scheduleLocalNotification(notification) 

Trả lời

14

Bạn cần phải cung cấp một giá trị NSCalendarUnit như “HourCalendarUnit” hoặc “DayCalendarUnit” cho lặp đi lặp lại một thông báo.

Chỉ cần thêm mã này để lặp lại thông báo địa phương hàng ngày:

notification.repeatInterval = NSCalendarUnit.CalendarUnitDay 
+3

Đối với một số thông báo lý do tiếp tục bị đẩy một sau khi khác. Tôi đã thay đổi nó thành phút để kiểm tra nhưng kể từ đó thông báo tiếp tục được đẩy ngay cả khi tôi đã thay đổi lại. Bất kỳ ý tưởng tại sao? @vizllx – JUSDEV

+0

Tôi đang gặp vấn đề tương tự. Có ai biết nguyên nhân và sửa lỗi –

+0

Nếu bằng cách đẩy cái khác, tôi chỉ phát hiện ra rằng các thông báo cục bộ được đăng ký trong các phiên cài đặt khác nhau vẫn tồn tại - Nếu bạn gỡ cài đặt rồi cài đặt lại ứng dụng, các thông báo trước đó (nếu chúng chưa được kích hoạt chưa) sẽ TẤT CẢ lửa cùng một lúc nếu thông báo cục bộ được bật lại trong phiên cài đặt mới nhất. Hy vọng điều này sẽ giúp người khác. – cloudcal

1

var repeatInterval: NSCalendarUnit

=> các tài liệu nói "Khoảng lịch mà tại đó để sắp xếp lại các thông báo"

vậy: sử dụng NSCalendarUnit.CalendarUnitDay

+0

@downvoter: tại sao? –

12

Vì vậy, phải sửa đổi mã trên @ vizllx của slighty. Đây là dòng sản phẩm mới:

notification.repeatInterval = NSCalendarUnit.Day 

Dưới đây là một ví dụ đầy đủ làm việc tôi đã sử dụng:

let notification = UILocalNotification() 

    /* Time and timezone settings */ 
    notification.fireDate = NSDate(timeIntervalSinceNow: 8.0) 
    notification.repeatInterval = NSCalendarUnit.Day 
    notification.timeZone = NSCalendar.currentCalendar().timeZone 
    notification.alertBody = "A new item is downloaded." 

    /* Action settings */ 
    notification.hasAction = true 
    notification.alertAction = "View" 

    /* Badge settings */ 
    notification.applicationIconBadgeNumber = 
    UIApplication.sharedApplication().applicationIconBadgeNumber + 1 
    /* Additional information, user info */ 
    notification.userInfo = [ 
    "Key 1" : "Value 1", 
    "Key 2" : "Value 2" 
    ] 

    /* Schedule the notification */ 
    UIApplication.sharedApplication().scheduleLocalNotification(notification) 
} 
Các vấn đề liên quan