Ich habe ein Programm in SWIFT, das erkennt, wenn ein Beacon oder mehrere Beacons außerhalb des Bereichs sind und basierend auf , dass es so etwas wie das Speichern einiger Daten in der Datenbank usw. funktioniert. Alles funktioniert gut , aber ich bekomme viele falsch positive auf eine Weise, dass "didExitRegion" gefeuert und wenige Sekunden später "didEnterRegion" gefeuert wird, während ich nicht bewegt worden bin usw. Ich weiß, dass dies viel mit der Abstimmung zu tun hat von den Beacons und ihren Qualitäten, aber in dieser Zeit habe ich eine alternative Lösung gefunden.
Also entschied ich mich, NSTimer zu verwenden, um zu sehen, ob ich wirklich außerhalb der Reichweite bin oder ist es nur ein falsches positives, das ich bekomme? Wenn also didExitRegion ausgelöst wird, starte ich 60 Sekunden lang einen NSTimer. Wenn die 60 Sekunden oben sind und didEnterRegion kein Feuer bekommen hat, dann weiß ich Ich bin wirklich außerhalb der Reichweite und führe jede Art von Datenrettung durch, die ich machen muss. Sonst, wenn didEnterRegion innerhalb dieser 60 Sekunden aufgerufen wird, dann nehme ich an, dass es ein falscher positiver war und annulliere den nstimer und mache nichts.Verwenden Sie NSTimer zur besseren Validierung von Beacon
Alles funktioniert gut, solange ich mit einem Beacon arbeite. Das Problem mit Timer ist, wenn mehrere Beacons außerhalb der Reichweite gehen. lässt sagen, erste Beacon ist außerhalb des Bereichs, so dass ExitRegion Feuer und startet den NSTimer Lassen Sie uns sagen, 20 Sekunden später zweite Beacon ist Off-Bereich und wieder didExitRegion wird gefeuert und dass man den NSTimer wieder gestartet. Nun meine NSTimer ist alles nicht mehr synchron und zu dieser Zeit, die Dinge funktionieren nicht richtig, und die NSTimer selbst kontinuierlich zu starten, wenn 60 Sekunden oben und usw.
Also meine Frage ist, was die Arbeit um diese Lösung? Wie kann ich meinen nstimer synchron halten, wenn er erneut aufgerufen wird, bevor er ungültig gemacht wird? Gibt es einen besseren Weg zu dieser Lösung? Auch hier weiß ich, dass eine bessere Qualität Beacons helfen kann, aber das ist keine Option für mich in dieser Zeit.