Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#3

AW: Testen ob die App den LocationSensor nutzen darf!

  Alt 9. Apr 2020, 07:12
Das leider sehr komplex, besonders wenn noch weitere Permissions gebraucht werden.
Foreground / Background spielt da auch mit rein.
Das ist äusserst behämmert gelöst von Apple, weil es da keine Asynchronen callbacks gibt,
so wie bei Android.

Immerhin kann man den Status abfragen.

Delphi-Quellcode:
function IsAuthorized_Foreground( const AAllowBackgroundOperation : Boolean ) : Boolean;
var
    LRes : TAuthorizationType;

begin

    // Taken from System.iOS.Sensors
    case TCLLocationManager.OCClass.authorizationStatus of
      kCLAuthorizationStatusNotDetermined :
          LRes := TAuthorizationType.atNotSpecified;

      kCLAuthorizationStatusDenied, // by user
      kCLAuthorizationStatusRestricted : // maybe globally
          LRes := TAuthorizationType.atUnauthorized;

      kCLAuthorizationStatusAuthorizedWhenInUse :
          begin
              if AAllowBackgroundOperation then
              begin
                  LRes := TAuthorizationType.atUnauthorized // this may not be allowed in background
              end
              else
                  LRes := TAuthorizationType.atAuthorized; // CAN USE
          end;

      kCLAuthorizationStatusAuthorizedAlways :
                  LRes := TAuthorizationType.atAuthorized; // CAN USE

    else // avoids compiler warnings
          LRes := TAuthorizationType.atNotSpecified;
    end;

    if LRes = TAuthorizationType.atAuthorized then
    begin
        Result := True;
    end
    else
    begin
        Result := False;
    end;

end;
Den Zustand Immer erlauben kann man auch in machen Versionen erst im 2ten Schritt einstellen.
Programmmässig scheint es da keine Möglichkeit zu geben das einzustellen,
oder auch nur die Frage hochkommen zu lassen.

https://medium.com/better-programmin...s-5482abc77961

https://medium.com/@jigarm/core-loca...s-ac2f46848dfc

https://stackoverflow.com/questions/...-time/37471850

Das ist auch abgekündigt und geändert, und scheint auf jedem Phone irgendwie anders zu funktionieren.
Ich bin schon froh wenn die App nicht einfach abstürzt.
Eine einfache Lösung habe ich auch nicht, ich frage regelmässig den Status ab bevor ich weitermache.
Das bringt aber meine bisherigen Abläufe ziemlich Durcheinander.

Geändert von Rollo62 ( 9. Apr 2020 um 07:21 Uhr)
  Mit Zitat antworten Zitat