2017-01-09 4 views
0

私はEstimote SDKを実装し、ビーコンレンジング/スキャンデリゲートメソッドを追加しました。今、デバイスがビーコン領域に入るときにローカル通知をトリガーしたい。ここで私はローカル通知の問題に直面しています。 私はビーコン領域に入ると、うまくいっているという通知を受けていますが、ランダムな間隔の後に何度も繰り返します。私は地元の通知を2回以上受け取りました。iOS/Swift3でEstimoteSDKから複数の通知を制限する方法は?

2番目の点は、通知領域からトリガー通知をクリアする手段があるかどうかです。一度に1つの通知のみを表示したいからです。したがって、ローカル通知がトリガーされると、通知領域から通知があればそれをクリアする必要があります。

私はとcancelAllLocalNotificationsが、通知が削除されていないcancelLocalNotificationてみました。

+0

あなたが間違っている可能性のあることを確認するためにコードを共有してください。 –

答えて

0

これは、コードの私の実装です:

beaconRegion.notifyOnEntry = true 
    beaconRegion.notifyOnExit = true 
    self.beaconManager.delegate = self 
    self.beaconManager.requestAlwaysAuthorization() 
    self.beaconManager.startMonitoring(for: beaconRegion) 

func beaconManager(_ manager: Any, didEnter region: CLBeaconRegion) { 
    if isAuthenticated == nil { 
     return 
    } 

    let notification = UILocalNotification() 
    notification.alertBody = "You are in beacon range." 
    notification.fireDate = Date.init(timeIntervalSinceNow: 2) 
    notification.userInfo = ["enterInBeaconRange":true] 
    UIApplication.shared.presentLocalNotificationNow(notification) 

} 

は、今私は通知前に「cancelAllLocalNotifications」方法を設定していた場合は、通知センターから以前のすべての通知をクリアしていません。

+0

既に起動されている通知をキャンセルすることはできません。あなたはスケジュールされたもののためにそれを行うことができます。 –

+0

新しいフレームワーク** UNUserNotificationCenter **で可能ですか? –

+0

遅く返事を申し訳ありません。前の通知をクリアするには、 'removeAllDeliveredNotification()'を使うことができます。最良の方法は、配信された通知の識別子を持つために使用され、 'removeDeliveredNotifications(" PREVIOUSLY_DEVLIVERED_NOTIFICATION_ID ")'です。 –

関連する問題