我喜欢制作能够在后台模式下在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.requestWhenInUseAuthorization
和FLocater.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);