2016-11-10 3 views
1

Я новичок в разработке iOS, но создал приложение, и я пытаюсь создать ежедневное уведомление для определенного времени, например (10AM). Теперь уведомление слишком много, если я использую время моего мобильного устройства до 10 утра. Я хочу вызвать локальное уведомление только один раз в определенное время, которое находится в 10:00, и я хочу повторить это ежедневно. Каков наилучший способ повторить уведомление ежедневно?Как вызвать локальное уведомление в определенное время ежедневно в swift 3

Вот мой код

func fire(){ 
    let dateComp:NSDateComponents = NSDateComponents() 
    dateComp.hour = 10 
    dateComp.minute = 00 
    dateComp.timeZone = NSTimeZone.systemTimeZone() 
    let calender:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierIndian)! 
    let date:NSDate = calender.dateFromComponents(dateComp)! 
    let localNotificationSilent = UILocalNotification() 
    localNotificationSilent.fireDate = date 
    localNotificationSilent.repeatInterval = NSCalendarUnit.Day 
    localNotificationSilent.alertBody = "Started!" 
    localNotificationSilent.alertAction = "swipe to hear!" 
    localNotificationSilent.timeZone = NSCalendar.currentCalendar().timeZone 
    localNotificationSilent.category = "PLAY_CATEGORY" 
    UIApplication.sharedApplication().scheduleLocalNotification(localNotificationSilent)  
} 
+0

Возможный дубликат [Повторяя местное уведомление ежедневно в установленное время с быстрым] (http://stackoverflow.com/questions/30619998/repeating-local- уведомление-daily-at-a-set-time-with-swift) – sanman

ответ

1

ваша проблема дата огонь, который не является правильным

вы можете создать дату пожара, как этот путь

let today = Date() 
    let calendar = NSCalendar.current 
    let components = calendar.dateComponents([.day, .month, .year], from: today) 

    var dateComp:DateComponents = DateComponents() 
    dateComp.day = components.day 
    dateComp.month = components.month 
    dateComp.year = components.year 
    dateComp.hour = 10 
    dateComp.minute = 00 
    let date = calendar.date(from: dateComp) 

, если вы хотите, чтобы проверить дату пожара то вы можете проверить, как этот путь

let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "dd MM yyyy hh:mm:ss" 
    let fireDate = dateFormatter.string(from: date!) 
    print("fireDate: \(fireDate)") 

Теперь пришло время, чтобы установить дату огневой местного оповещение

localNotificationSilent.fireDate = date 
// no need to set time zone Remove bellow line 
localNotificationSilent.timeZone = NSCalendar.currentCalendar().timeZone 

код Уведомления

let localNotificationSilent = UILocalNotification() 
    localNotificationSilent.fireDate = date 
    localNotificationSilent.repeatInterval = .day 
    localNotificationSilent.alertBody = "Started!" 
    localNotificationSilent.alertAction = "swipe to hear!" 
    localNotificationSilent.category = "PLAY_CATEGORY" 
    UIApplication.shared.scheduleLocalNotification(localNotificationSilent) 

Я надеюсь, что это поможет.

+0

как повторять это ежедневно ?? –

+0

обновил свой ответ –

+0

пусть сегодня = NSDate() пусть календарь = NSCalendar.currentCalendar() Пусть компоненты = calendar.components ([День, .Month, .Year.], FromDate: сегодня) пусть dateComp: NSDateComponents = NSDateComponents() dateComp.day = components.day dateComp.month = components.month dateComp.year = components.year dateComp.hour = 10 dateComp.minute = 00 дата ЛПЭ = calendar.dateFromComponents (dateComp) я изменили код как этот bez ur код dosent support swift3 и теперь получили 3 уведомления, если я установил свое устройство на 10AM –

0

Работы в Swift 3 прошивки 10:

UNUserNotificationCenter.current().requestAuthorization(
    options: [.alert, .sound, .badge], completionHandler: {userDidAllow, error in 
    //if userDidAllow : do something if you want to 
}) 

//Set notification to trigger 11:30AM everyday 
var dateComponents = DateComponents() 
dateComponents.hour = 11 
dateComponents.minute = 30 
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true) 

//Set your content 
let content = UNMutableNotificationContent() 
content.title = "Your notification title" 
content.body = "Your notification body" 

let request = UNNotificationRequest(
    identifier: "yourIdentifier", content: content, trigger: trigger 
) 
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil) 
+0

Эй, я не в состоянии стрелять уведомления в определенное время. Я сделал тот же код. – Abha

Смежные вопросы