2015-05-10 4 views
0

Мне нужен способ узнать, в какое время это будет после «неизвестного» количества времени для руды.Рассчитайте разницу между двумя датами. Swift 1.2

После запуска таймера необходимо рассчитать, когда отправить местное уведомление. Мне нужно, чтобы приложение было полностью закрыто и все еще уведомляет об этом.

Благодаря

Это ошибка, я получаю, когда я реализовать «notificationsAllowed» код. enter image description here

ответ

1

Чтобы рассчитать время окончания вы можете использовать

timerEndTime = NSDate(timeIntervalSinceNow:NSTimeInterval(oreWanted * 11)) 

Таким образом, вы получите NSDate объект. Теперь вы можете запустить UILocalNotification в указанное расчетное время:

Примечание: При запуске приложения вам необходимо запросить разрешения на получение уведомлений. Я упростил это здесь с notificationsAllowed и soundsAllowed, которые являются логическими переменными в моем AppDelegate.

let appDelegate = UIApplication.sharedApplication.delegate as! AppDelegate 

if appDelegate.notificationsAllowed { 
    let notification = UILocalNotification() 
    notification.fireDate = timerEndTime 
    notification.timeZone = NSTimeZone.defaultTimeZone() 
    notification.alertBody = "Notification body text" 
    notification.alertTitle = "Notification alert title" 

    if appDelegate.soundsAllowed { 
     notification.soundName = UILocalNotificationDefaultSoundName 
    } 

    UIApplication.sharedApplication().scheduleLocalNotification(notification) 
} 

EDIT

Зарегистрируйте приложение для уведомлений в AppDelegate:

class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    var notificationsAllowed = false 
    var notificationSoundAllowed = false 


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     let notificationSettings = UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert, categories: nil) 
     UIApplication.sharedApplication().registerUserNotificationSettings(notificationSettings) 

     return true 
    } 

    func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) { 
     if notificationSettings.types & UIUserNotificationType.Alert != nil { 
      self.notificationsAllowed = true 
     } 

     if notificationSettings.types & UIUserNotificationType.Sound != nil { 
      self.notificationSoundAllowed = true 
     } 
} 
+0

Рад помочь вам. Если это было решение, пожалуйста, отметьте правильный ответ, нажав на полый флажок. Спасибо. – zisoft

+0

Знаете ли вы способ, чтобы таймер продолжал идти, даже когда пользователь нажимает кнопку «домой»? –

+0

, чтобы пользователь мог видеть, сколько осталось времени. –