Seit iOS7.1 können iBeacon-Regionen überwacht werden, ohne dass die App im Vordergrund oder Hintergrund geöffnet ist. Während dies eher eine Laborsituation als ein echtes Weltproblem ist, habe ich mich gefragt, was passiert, wenn zwei iOS-Apps sich registrieren, um die selbe iBeacon-Region im Hintergrund zu überwachen. Nehmen wir an, dass beide Apps eine lokale Benachrichtigung auslösen, wenn eine bestimmte Region eingegeben wird ...
Gibt es in diesem Fall ein erwartetes / dokumentiertes Verhalten? Z.B. 1) beide Apps werden ausgelöst? 2) nur die letzte App, die registriert wurde, wird ausgelöst? 3) usw.
Beide Apps werden ausgelöst. Ich glaube nicht, dass dies explizit in Apple-Dokumenten steht, aber alle Apps sind sandboxed und sollten sich unabhängig verhalten, es sei denn, die Dokumentation sagt etwas anderes.
Ich kann bestätigen, dass dies aus Erfahrung heraus funktioniert, weil mein Unternehmen viele iBeacon-Apps erstellt und sie ursprünglich so erstellt wurden, dass sie die gleichen UUID / major / minor für die Beacons von Radius Networks verwenden. Wenn ich also in der Nähe eines dieser Beacons mein iPhone einschalte, erhalte ich mehrere Benachrichtigungen, eine für jede App, die für dieselbe Region überwacht.
Ich kann bestätigen, was auch Alexander Vasenin gesagt hat. Ich habe es auf iOS 9.0.2 getestet.
Wenn es Ihre Situation erlaubt, können Sie dies "umgehen", indem Sie eine Ihrer Apps so einstellen, dass sie eine "strengere" Region verwenden, zum Beispiel:
App: CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:@"identifier"];
App: CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid major:69 identifier:@"identifier"];
Während im Allgemeinen die gleiche iBeacon-Region mit mehreren Apps überwacht, funktioniert das gut. Gestern haben wir Probleme damit bekommen. Zwei unserer Geräte weigerten sich, einen der folgenden Rückrufe aufzurufen:
%Vor%während andere zwei fehlerlos funktionierten. Wir haben mehrere Stunden damit verbracht, herauszufinden, was falsch ist, aber das Problem wurde erst gelöst, nachdem wir die alte Proof-of-Concept-App gelöscht hatten, die dasselbe überwachte (oder fast das gleiche, ich bin mir nicht sicher über diese) iBeacon Region von beiden Geräten.
Interessanterweise habe ich auf meinem eigenen Gerät auch diese alte Proof-of-Concept-App und beide Apps funktionieren einwandfrei.