2016-05-01 14 views
0


Ich habe diese iBeacon-Anwendung in Swift, die einige Aufgaben ausführen, wenn didExitRegion und didEnterRegion aufgerufen werden. Alles funktioniert gut, außer dass ich eine Fehlalarmmeldung erhalte, so dass ich innerhalb des Beacon-Bereichs bin. Plötzlich wird die ExitRegion gefeuert und sofort, in ein paar Sekunden später, wurde dieEnterRegion erneut gefeuert. Dies passiert, wenn sich das Telefon oder die Bake nicht bewegt hat oder die Signale blockiert wurden.
Ich habe irgendwo gelesen, dass dies ein Fehler auf der Apple-Seite ist. Nicht sicher, wie wahr das ist, aber was ist die Arbeit um dies?
Ich dachte, die Alt, Lat jedes Mal, wenn die didExit gefeuert wird und mit den vorherigen Werten verglichen wird, oder wenn es eine bessere Möglichkeit, dies zu tun ist?
Getting false positive alarm mit Beacon exit/Eingabe requin

Dank

Antwort

2

Aus meiner Erfahrung, so scheint es, dies ist etwas, das, wenn das Gerät passiert das Signal des Baken verliert, während immer noch für einen Moment in Reichweite. Meine Apps haben mir alle 5 Minuten eine didEnterRegion-Benachrichtigung geschickt, wenn ich direkt neben dem Beacon saß. Nach dem, was ich gelesen habe, hängt die Leistung der App von der Qualität der Bake bis hin zur Signalstärke und Signalfrequenz ab.

3

Ich denke, eine mögliche Lösung könnte sein, den Code innerhalb der DidExitRegion-Methode in eine neue Methode zu verschieben. In didExitRegion starten Sie einen Timer für 5 Sekunden (oder was immer Sie am besten finden), um die neue Methode aufzurufen, wenn sie ausgelöst wird.

Wenn didEnterRegion aufgerufen wird, während der Timer ausgeführt wird, brechen Sie den Timer ab und kehren Sie von didEnterRegion zurück.

1

Dies ist ein Problem mit Beacons, die nicht häufig genug senden. Ein Ereignis didExitRegion wird auf iOS ausgelöst, wenn in 30 Sekunden keine Beacon-Pakete erkannt wurden. Wenn ein Beacon in der Nähe ist und mit den empfohlenen 10 Hz sendet, sind falsche Positive sehr, sehr selten.

Viele Beacon-Hersteller reduzieren die Übertragungsraten, um Batterie zu sparen, einige Übertragungen passieren so selten wie alle 5 Sekunden. Dies führt zu schlechter Leistung und falschen Ausgängen. Nicht alle gesendeten Beacon-Pakete werden aufgrund von Funkstörungen und Interferenzen empfangen. In der Praxis tun dies nur 80-90%. Mit einem Beacon, das alle 5 Sekunden sendet, führen 6 verpasste Pakete in Folge zu einem Exit-Ereignis. Dies wird normalerweise nicht passieren, aber manchmal wird es.

Die beste Lösung ist es, die Bake so zu konfigurieren, dass sie häufiger überträgt, idealerweise mit 10 Hz oder mehr. Wenn Sie ein Beacon erhalten, mit dem Sie das tun und es so oft übertragen können, werden falsche Exits sehr, sehr selten sein.