Ich arbeite an einer iOS App, die für iBeacon Regionen überwacht. Wenn die App im Hintergrund ausgeführt wird, möchte ich eine lokale Benachrichtigung senden, wenn sie auf eine bestimmte iBeacon-Region trifft. Alles funktioniert gut, bis auf eine Sache: locationManager: didEnterRegion wird offenbar erst aufgerufen, wenn der Benutzer den Sperrbildschirm anzeigt. Selbst wenn das Gerät eine iBeacon-Region durchlaufen hat, während sich die App im Hintergrund befand, erhalten sie die Benachrichtigung erst, wenn sie den Sperrbildschirm anzeigen.iBeacons: Wenn App im Hintergrund ist, locationManager: didEnterRegion: wird nur aufgerufen, wenn der Sperrbildschirm angezeigt wird
Ich habe auch versucht mit startMonitoringForRegion, und diese Art von funktioniert - wenn die App im Hintergrund ausgeführt wird, wird locationManager: didDetermineState: ausgelöst, wenn das Gerät die iBeacon-Region eintritt. Dies geschieht jedoch nur einmal. Wenn der Benutzer anschließend die iBeacon-Region verlässt und wieder einkehrt, wird locationManager: didDetermineState nicht erneut ausgelöst.
Ich betreibe ein iPhone 5s und benutze ein iPhone 4s als iBeacon, wenn das einen Unterschied macht.
Korrektur: Dieses Phänomen tritt offensichtlich nur dann auf, wenn ich ein iPhone 4s als Client verwende. Wenn ich eine 5s verwende, wird die Benachrichtigung sofort geliefert.
notifyEntryStateOnDisplay wird auf YES gesetzt. Wenn ich die App starte, schalte iBeacon ein, didDetermineState wird unabhängig davon ausgelöst, ob sich die App im Vordergrund oder im Hintergrund befindet, und alles ist gut. Wenn ich dann den iBeacon ausschalte, warte eine Minute und schalte ihn dann wieder ein, didDetermineState zündet nicht mehr, wenn die App im Vordergrund oder im Hintergrund ist. Ich habe überprüft, und ich stopMonitoringForRegion nicht überall anrufen. Es scheint fast so, als wäre es nur einmal zu feuern. –
Ich glaube ich habe es - ich ging davon aus, dass alles in Echtzeit passieren würde, aber laut dem folgenden Link muss man manchmal ein paar Minuten zwischen dem Ausschalten und dem erneuten Einschalten eines iBeacon warten. Als ich fünf Minuten gewartet habe, fingen die Delegiertenmethoden wieder an zu feuern. –
http: // Stapelüberlauf.com/questions/19670513/local-notifications-only-received-once-ibeacons –