2017-01-09 1 views
0

Ich implementierte Estimote SDK und hinzugefügt Beacon Ranging/Scanning-Delegate-Methode. Jetzt möchte ich eine lokale Benachrichtigung auslösen, wenn das Gerät gerade in den Beacon-Bereich eintritt. Hier habe ich Probleme mit der lokalen Benachrichtigung. Wenn ich Beacon-Region betrete, erhalte ich eine Benachrichtigung, die in Ordnung ist, aber sie wird nach einem zufälligen Intervall mehrmals wiederholt. Ich bekomme mehr als einmal eine lokale Benachrichtigung.Wie schränken Sie mehrere Benachrichtigungen von EstimoteSDK in iOS/Swift3 ein?

Zweite Sache ist, Gibt es eine Möglichkeit, ausgelöste Benachrichtigung aus dem Infobereich zu löschen. Weil ich nur 1 Benachrichtigung gleichzeitig anzeigen möchte. Wenn die lokale Benachrichtigung ausgelöst wird, sollte sie die vorhandene Benachrichtigung aus dem Infobereich löschen, falls bereits vorhanden.

Ich habe versucht, mit cancelLocalNotification und cancelAllLocalNotifications aber Benachrichtigungen nicht entfernt werden wird.

+0

Bitte teilen Sie Ihren Code, um zu sehen, was Sie möglicherweise falsch machen. –

Antwort

0

Dies ist meine Implementierung von Code:

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) 

} 

Wenn ich nun "cancelAllLocalNotifications" -Methode vor der Anmeldung habe die Einrichtung, es ist nicht alles vorherige Benachrichtigung von Notification Center zu löschen.

+0

Sie können die Benachrichtigungen, die bereits ausgelöst wurden, nicht abbrechen. Sie können es für die geplanten tun. –

+0

Ist es möglich mit neuem Framework ** UNUserNotificationCenter **? –

+0

Entschuldigung für die verspätete Antwort, Sie können 'removeAllDeliveredNotification()' verwenden, um die vorherige Benachrichtigung zu löschen. Der beste Weg wird verwendet, um die Kennung für die gelieferte Benachrichtigung zu haben und dann 'removeDeliveredNotifications (" PREVIOUSLY_DEVLIVERED_NOTIFICATION_ID ")'. –

Verwandte Themen