Wie aktiviere ich den Zugriff auf den Regionsüberwachungsdienst?

8

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:

%Vor%

Wie ist das möglich? Hier ist mein Setup und was ich überprüft habe:

  • Ich arbeite mit Xcode, um Log-Statements zu sehen.
  • Ich bin mit meinem iPhone verbunden 5. Ich laufe nicht im Simulator.
  • Ich habe sichergestellt, dass der Radius ausreichend groß ist, um überwacht zu werden (obwohl das keine Rolle spielen sollte).
  • Ich habe sichergestellt, dass Einstellungen & gt; Datenschutz & gt; Standortdienste sind für mein Gerät aktiviert und meine App.
  • Ich habe jedes Core Location and Region Monitoring-Dokument gelesen, das Apple jemals veröffentlicht hat.
  • Ich habe sichergestellt, dass WiFi eingeschaltet ist und ich ein starkes Mobilfunksignal habe. Wenn ich es nicht getan hätte, wäre es nicht in der Lage, meinen Standort zu finden.
  • Ich habe sichergestellt, dass didChangeAuthorizationStatus den korrekten Status meldet: kCLAuthorizationStatusAuthorized
  • Ich habe sichergestellt, dass nach dem Hinzufügen meiner Region die Überwachung tatsächlich beginnt, indem ich den Aufruf der Methode didStartMonitoringForRegion .
  • beobachte

Was vermisse ich? Warum wird dieser Fehler angezeigt, wenn die Standortdienste eindeutig aktiviert sind?

    
Aaron 15.02.2014, 00:31
quelle

4 Antworten

16

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.

    
Aaron 15.02.2014, 20:12
quelle
4

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:)

    
Kenny Winker 16.11.2015 23:55
quelle
0

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.

    
Eugene 08.06.2014 22:59
quelle
0

Für meinen Fall helfen Sie bei der Einstellung "IMMER" "Um Regions-Monitoring (mindestens in iOS 9) durchzuführen, müssen Sie" immer "Autorisierung" und 300 Meter Radius

anfordern     
dip 04.04.2016 11:08
quelle