2017-09-09 14 views
0

私のiOSアプリケーションでは、イベントの開始15分前にユーザに通知するためにlocalNotificationを作成しようとしています。しかし、私は立ち往生しています。私はCoreDataを使ってデータを保存しています。私はAppointmentオブジェクトを作成することができます。 date属性はAppointmentオブジェクトに関連付けられています。私は本当にそれに固執しています。 timeIntervalとその他の通知プロセスの設定方法はわかりません。CoreData属性を持つUILocalNotificationsを作成する

Appointmentが作成されてから15分前までにtimeIntervalを設定する方法がわかりません。

func scheduleNotifications() { 
    let content = UNMutableNotificationContent() 
    guard let client = client, let name = client.name, let formula = formula, let date = formula.date else { return } 
    content.title = "BookMe" 
    content.subtitle = "" 
    content.body = "Your appointment with \(name) will begin soon." 
    content.badge = 1 

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: ??, repeats: false) 

編集:これは私が持っているものですが、何が発射されていない。ここ

は、私のコードの一部です。

let date = formula.date 
let fireDate = Calendar.current.date(byAdding: DateComponents(minute: -15), to: date as Date) 
guard let timeInterval = fireDate?.timeIntervalSince(Date()) else { return } 

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: timeInterval, repeats: false) 

let request = UNNotificationRequest(identifier: self.timerUserNotificationIdentifier, content: content, trigger: trigger) 

UNUserNotificationCenter.current().add(request, withCompletionHandler: nil) 
+0

日付の作成に15分の日付を作成する方法を尋ねていますか? – Abizern

+0

@Abizern本質的にはい –

答えて

0

私はあなたが15分その日前に通知を発射できるように、今、いくつかの日付の前に15分の時間間隔を見つけるために探していることを理解しています。

は、ここで私は遊び場

// Create a date in the future - this is what you get from your own data object and I'm creating it here just so I have a date. 
let scheduledDate = Calendar.current.date(from: DateComponents(year: 2017, month: 09, day: 22, hour: 22))! 

// Create a date 15 minutes earlier than your shcheduled date, this is when you want your notification to fire 
let fireDate = Calendar.current.date(byAdding: DateComponents(minute: -15), to: scheduledDate)! 

// Then just work out the time interval between the fire date and now to get the time interval 
let timeInterval = fireDate.timeIntervalSince(Date()) 

言い訳作成日付のアンラップ力にアップノック簡単な例ですが、これらは、それは一例ですので、あなたが代わりに感嘆符を使用しないと優雅エラーを処理する必要があります。あなたが使用しようとしている

UNTimeIntervalNotificationTriggerを追加するために編集した

now、あなたが通知を発射する時間の間の時間間隔を必要とします。 TimeIntervalは秒数を表すDoubleです。このような場合には、遅延と、通知を開始する時刻と現在の時刻の間の秒数を表します。それ以外の場合は、日付を固定日付からの秒数で表します。この固定日付はtimeIntervalSince1970 - 「1970年1月1日の日付オブジェクトと00:00:00 UTCの間隔」です。 UNIXタイムスタンプまたはtimeIntervalSinceReferenceDateに使用するもの - 「日付オブジェクトと2001年1月1日00:00:00 UTCの間隔」

あなたが何をしていても、秒数を直接追加または削除することで日付を変更する誘惑に抵抗し、代わりにDateComponentsを使用します。

+0

私はこれをしましたが、私が持っている日付を実装し、通知が発射されていません –

+0

あなたは何をしたのか分かりません。 – Abizern

+0

編集済みコードの上記を確認 –

関連する問題