2016-08-30 6 views
0

特定の時刻に起動する必要があるlocal notificationsを保存するアプリケーションが必要です。特定の時刻に起動するローカル通知の作成

私のアプリケーションは簡単です。ユーザーはUIDatePickerを使用して時刻を予約できます。通知は、その予約時間の2分前に解雇されます。

今のところ、通知を開始する時刻を手動で挿入しようとしています。私はこのコードを使用しています:

let notification = UILocalNotification() 

self.timePicked = " 22:38:00 +0000" 

timeForLocalPush = defaults.objectForKey("timeForLocalPush") as! String 

timeForLocalPush = timeForLocalPush + self.timePicked 

print(timeForLocalPush) // this prints for this example today, 2016-08-30 22:38:00 +0000 

dateFormatter.dateFormat = "YYY-MM-dd" 

notification.fireDate = dateFormatter.dateFromString(timeForLocalPush) 
notification.timeZone = NSCalendar.currentCalendar().timeZone 
notification.alertBody = self.nameField.text! + " Har bokat tid nu!" 


UIApplication.sharedApplication().scheduleLocalNotification(notification) 

何が起こるかは、時間を予約した直後に通知が発せられるということです。目的のアクションはこれです:

現在の時刻:この時間午前14時17分

クライアントブック:15時

ローカル通知が発射されるように設定されている

:午後02時58

あなたが必要な場合追加の情報だけで教えてください。

+0

あるものdateFormatter.dateFromString(timeForLocalPush)の出力?それがゼロでないことを確認してください。 – Sujit

+0

これは無かったのですが、なぜこれが起こりますか、それを修正するために何ができますか? @Sujit –

+0

あなたの日付フォーマッタは間違っています。 "yyyy-MM-dd HH:mm:ss"を使用してください – Sujit

答えて

1

が最初にそれが間違っdateFormatter.dateFormat = "YYY-MM-dd"であるあなたの日付フォーマットをチェックし、それは例えば

let localNotification1 = UILocalNotification() 
    localNotification1.alertBody = "Your alert message " 
    localNotification1.timeZone = NSCalendar.currentCalendar().timeZone 
    let formatter = NSDateFormatter() 
    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
    localNotification1.fireDate = formatter.dateFromString("2016-08-30 22:38:00") 


    UIApplication.sharedApplication().scheduleLocalNotification(localNotification1) 
+0

ありがとう、完璧に働いています! –

0

ためdateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"

であるありがとうあなたの日付形式が適切に設定してください:

// this prints for this example today, 2016-08-30 22:38:00 +0000 

//Your date format decalre:  dateFormatter.dateFormat = "YYY-MM-dd" 

dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:ss" 
関連する問題