0

UserNotificationメッセージが毎回ユーザーに配信されるときに何かを行うことは可能ですか?iOS:UserNotificationを受け取ったときに何かしますか?

let tdate = Date(timeIntervalSinceNow: 10) 
    let triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second,], from: tdate) 
    let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: true) 

    let identifier = "hk.edu.polyu.addiction.test" 
    let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger) 

    UNUserNotificationCenter.current().removeAllPendingNotificationRequests() 
    UNUserNotificationCenter.current().add(request, withCompletionHandler: { (error) in 
     if error != nil { 
     debugPrint("center.add(request, withCompletionHandler: { (error)") 
     } else { 
     debugPrint("no error?! at request added place") 
     } 
    }) 

これは、ユーザーがボタンを押したときに通知を送信したコードです。 (つまり、10秒後に通知がユーザーに表示されます)

通知を押さなくても、アプリの変数を更新したい(アプリがバックグラウンドにあると仮定します)。

可能ですか?

または、この通知が行われている限り。私のアプリのいくつかの計算によれば、別の新しい通知が予定されていますか? (定刻ではなく、繰り返しは使用できません)

+0

いいえ、あなたはバックグラウンドでこれを行うことはできません。 –

答えて

0

はい、可能です!機能を変更する必要があります。

  1. バックグラウンドモードでバックグラウンドフェッチを有効にします。
  2. バックグラウンドモードでリモート通知を有効にします。
  3. デリゲートメソッドの実装:application:didReceiveRemoteNotification:fetchCompletionHandler:
  4. このデリゲートメソッドは、通知が電話に到着したときに呼び出されるため、データを更新することができます。
  5. 通知デリゲートメソッドでユーザがタップすると、didReceiveRemoteNotification が呼び出され、アプリが開き、ユーザーはアプリで最新のデータを取得します。

アップルのAPIリファレンス:

あなたのペイロードが正しく設定されていない場合は、通知が代わりに バックグラウンドで、あなたのアプリに配信されるのユーザーに に表示されることがあります。ペイロードのAPS辞書はコンテンツ利用できる1の値を持つキー ペイロードのAPS辞書を含めることはできません 警告、音、またはバッジが含まれている必要があり

:あなたのペイロードでは、次の条件に該当 をしていることを確認してくださいキー。サイレント通知がユーザのデバイスに を配信すると、iOSはバックグラウンドでアプリを起動し、 は実行に最大30秒を与えます。

+0

私の通知がローカルのUserNotificationであり、リモートの通知ではない場合でも、メソッドは引き続きトリガーされますか? 上記のコードを使用して別の通知をスケジュールすることはできますか?didReceiveRemoteNotification:fetchCompletionHandler:method? – user6539552

+0

funcアプリケーション(アプリケーション:UIApplication、didReceive通知:UILocalNotification) iOS10でのこの機能の置き換えはありますか? – user6539552

+0

私はあなたの試み方法、 FUNCアプリケーション(_アプリケーション:のUIApplication、didReceiveRemoteNotificationユーザー情報:[AnyHashable:任意]、fetchCompletionHandler completionHandler:@escaping(UIBackgroundFetchResult) - >ボイド){ debugPrint( "======== = didReceiveRemoteNotification ") } バックグラウンドフェッチとリモート通知を有効にしますが、それでも機能は呼び出されません。何か私は逃した? – user6539552

関連する問題