Ich habe die Frage etwas vereinfacht. Wenn ich Regionen in meiner App erstelle und hinzufüge und den Status dieser Regionen abfrage, sehe ich Folgendes in monitoringDidFailForRegion
method:
The operation couldn’t be completed. (kCLErrorDomain error 4.)
Überprüfen der CLErrorDomain-Konstanten Ich sehe diesen Fehler 4 ist kCLErrorRegionMonitoringDenied
und wird wie folgt beschrieben:
Wie ist das möglich? Hier ist mein Setup und was ich überprüft habe:
didChangeAuthorizationStatus
den korrekten Status meldet: kCLAuthorizationStatusAuthorized
didStartMonitoringForRegion
. Was vermisse ich? Warum wird dieser Fehler angezeigt, wenn die Standortdienste eindeutig aktiviert sind?
Also habe ich noch einmal einen Blick auf die Dokumentation zum Region Monitoring geworfen und ich bemerkte dies in dem hervorgehobenen Element in der Liste:
Ermitteln der Verfügbarkeit der Regionsüberwachung
Bevor Sie versuchen, Regionen zu überwachen, sollte Ihre App überprüfen, ob die Regionsüberwachung auf dem aktuellen Gerät unterstützt wird. Es gibt verschiedene Gründe, warum die Regionsüberwachung möglicherweise nicht verfügbar ist:
- Das Gerät verfügt möglicherweise nicht über die Hardware, die zur Unterstützung der Bereichsüberwachung erforderlich ist.
- Der Benutzer hat der App möglicherweise die Berechtigung zur Verwendung der Regionsüberwachung verweigert.
- Der Benutzer hat möglicherweise die Standortdienste in der App "Einstellungen" deaktiviert.
- Der Nutzer hat die Hintergrund-App-Aktualisierung in der App "Einstellungen" entweder für das Gerät oder für Ihre App deaktiviert.
- Das Gerät befindet sich möglicherweise im Flugmodus und kann die erforderliche Hardware nicht einschalten.
Dann habe ich überprüft, ob die Hintergrund-App-Aktualisierung (eine neue Funktion unter iOS 7: Einstellungen & gt; Allgemein & gt; Hintergrund-App-Aktualisierung) aktiviert und für meine App verfügbar ist. Es war nicht . Ich habe das Feature eingeschaltet und BOOM meine Regionen melden jetzt ihren Status.
Es ist verwirrend und irreführend:
%Vor%... auch wenn die Hintergrund-App-Aktualisierung deaktiviert ist. Ich würde denken, dass es NO zurückgeben würde.
UPDATE:
Ich habe einen Fehlerbericht an Apple gesendet und ein offenes Radar für dieses Problem hinzugefügt.
UPDATE 3-11-14:
Apple hat bestätigt, dass dies ein Fehler ist.
Um Regions-Monitoring (zumindest in iOS 9) durchzuführen, müssen Sie die "Immer" -Autorisierung anfordern. Das ist nirgends dokumentiert, wo ich es finden könnte, aber es ist die einzige Möglichkeit, wie ich die Regionsüberwachung funktionierte.
rdar: // 23566600 - Wenn Sie in Apple sind:)
Fügen Sie den entsprechenden Eintrag in Ihrer info.list für die Benutzeraufforderungen hinzu, wenn Sie die Berechtigung zur Verwendung der Standortdienste erteilen. Diese info.plist-Einträge sind (NSLocationWhenInUseUsageDescription und NSLocationAlwaysUsageDescription). Ich habe festgestellt, dass das Weglassen des Eintrags NSLocationUsageDescription nicht den gleichen negativen Effekt hatte. Viel Glück.
Tags und Links ios monitoring ios7 cllocationmanager region