Einzelnen Beitrag anzeigen

Stewag

Registriert seit: 12. Jun 2008
161 Beiträge
 
Delphi 12 Athens
 
#5

AW: Testen ob die App den LocationSensor nutzen darf!

  Alt 9. Apr 2020, 13:22
... ja habe ich gesehen. Deswegen beziehe ich mich ja auch auf die neueren Apple Änderungen, die ja gar nicht mehr soo neu sind. Ich dachte ich frage dich trotzdem, da du an dem Thema zumindest damals dicht dran warst.

Der Code von Rollo ist mir so gar nicht eingängig, danke trotzdem, Rollo!

Hier mein angepasster Code. Ist aber etwas holprig, insbesondere weil beim ersten Aufruf bei blockierten Diensten trotzdem der Toast ("Die nächste Station...") kommt:

Code:
{$IFDEF IOS}
Function DDTCheckLocationAvail: boolean;
var
  LSensorArray: TSensorArray;
  LSensor: TCustomSensor;
  CS: TCustomLocationSensor;
  PositionAllowed: boolean;
begin
  result := False;
  PositionAllowed := true;

  TSensorManager.Current.Activate();
  try
    LSensorArray := TSensorManager.Current.GetSensorsByCategory(TSensorCategory.Location);
    for LSensor in LSensorArray do
    begin
      CS := TCustomLocationSensor(LSensor);
      if not CS.Started then
        try
          CS.Start; // hier gibt es eine Exception wenn die Positionsdienste NICHT autorisiert wurden!
        except
          PositionAllowed := False;
          result := False;
        end;

      if PositionAllowed then
        if TCustomLocationSensor.TProperty.Latitude IN CS.AvailableProperties then
          result := true;

      CS.Stop
    end;
  finally
    // TSensorManager.Current.Deactivate; // Soll man machen, lößt aber eine Exception aus...
  end
end;
{$ENDIF IOS}
Aufruf dann so:

Code:
{$IFDEF iOS}
  if DDTCheckLocationAvail then
  begin
    dm.LocationSensor1.Active := true;
    dm.Timer1.Enabled := true;
    TfgToast.show('Die nächste Station wird bestimmt...', short)
  end
  else
  begin
    showmessage('Zugriff auf Positionsdaten wurde verweigert. Bitte ggfl. in den Einstellungen des Gerätes ändern');
    dm.LocationSensor1.Active := False;
  end
{$ENDIF}
Steffen
  Mit Zitat antworten Zitat