我喜欢在后台模式下创建可以在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
,那么应用不要求任何权限。
当我允许FLocater.requestWhenInUseAuthorization
和FLocater.setAllowsBackgroundLocationUpdates(True);
时,应用程序在最小化时捕获位置,但在StatusBar中显示关于使用LocationSensor的大蓝色通知
但我需要以隐藏模式运行应用程序,我认为问题在于授权但不知道如何解决。 (Delphi 10.2.2)
我将不胜感激任何帮助
答案 0 :(得分:4)
您只能在iOS 11或更高版本中使用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);