我喜欢制作能够在后台模式下在iPhone上捕获我的位置的应用程序,
但我有一个问题:

应用程序无法询问表单权限requestAlwaysAuthorization
根据本文http://delphiworlds.com/2016/02/location-sensor-work-in-the-background-on-ios-9/(演示应用程序也不会询问),如果我将System.iOS.Sensors中的TiOSLocationSensor.DoStart: Boolean;FLocater.requestWhenInUseAuthorization更改为FLocater.requestAlwaysAuthorization,则App不要求任何权限。

当我允许FLocater.requestWhenInUseAuthorizationFLocater.setAllowsBackgroundLocationUpdates(True);时,应用程序将位置最小化,但是在StatusBar中显示有关使用LocationSensor的蓝色大通知

但是我需要在隐藏模式下运行应用程序,我认为问题在于授权但不知道如何解决。 (德尔福10.2.2)

我将不胜感激

最佳答案

您只能使用showsbackgroundlocationindicator属性在iOS 11或更高版本中执行此操作:

https://developer.apple.com/documentation/corelocation/cllocationmanager/2923541-showsbackgroundlocationindicator

为了使用它,您需要遵循与原始文章类似的方法,重新声明CLLocation管理器,并添加方法:

procedure setShowsBackgroundLocationIndicator(showsBackgroundLocationIndicator: Boolean); cdecl;

..并重新声明CLLocationManager委托。在TiOSLocationSensor.DoStart中,您可以检查iOS 11并设置属性,例如:
// Turn off the annoying blue indicator
if TOSVersion.Check(11) then
  FLocater.setShowsBackgroundLocationIndicator(False);

09-27 06:24