gpt4 book ai didi

ios - 如何让 GPS 应用程序在后台不间断地运行

转载 作者:行者123 更新时间:2023-11-28 20:22:02 27 4
gpt4 key购买 nike

我无法让 GPS 在后台运行。

当应用程序在后台运行时,我成功地保持了 GPS 运行,但它有时会停止。我注意到当我进入建筑物并在那里停留 2-3 小时时它会停止。 “停止”意味着我没有收到任何 GPS 点,即使定位服务图标仍然亮着。然后,当我离开时,我不会收到任何积分,直到我将我的应用程序带到前台。

我将 pausesLocationUpdatesAutomatically 属性设置为 NO。

因此,在我进入一个 GPS 信号较弱的位置之前,一切正常。当我离开那个区域时,我不再获得积分,尽管我应该因为 gps 信号现在很好。

这是应用程序进入后台时我的代码:

- (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"[AppDelegate]: Application entering in background!");
if(doesUserWantGPSTracking)
{
[self stopGPS];

UIApplication *app = [UIApplication sharedApplication];

bgTask = [app beginBackgroundTaskWithExpirationHandler:
^{

dispatch_async(dispatch_get_main_queue(),
^{

if( bgTask != UIBackgroundTaskInvalid )
{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}

});

}];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^{

[self startGPS];

dispatch_async(dispatch_get_main_queue(), ^{

if( bgTask != UIBackgroundTaskInvalid )
{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}

});

});
}
}

最佳答案

在您的信息 plist 中,添加 Required background modes

并将一项设置为 App registers for location updates

更新:

当 ios 返回到 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 时有明显的距离变化。我想你需要改变:

// Set the movement threshold.
locationManager.distanceFilter = 500; // meters

关于ios - 如何让 GPS 应用程序在后台不间断地运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15517979/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com