gpt4 book ai didi

iOS 位置管理器在手机锁定约 10 分钟后停止

转载 作者:可可西里 更新时间:2023-11-01 05:43:45 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序处于后台时获取位置。当我使用我的应用程序时,一切都很好。我也可以切换到任何其他应用程序(甚至是主屏幕)并且位置仍然会出现。如果我正在使用我的手机但我的应用程序在后台,只要我的手机处于事件状态,位置更新似乎就可以正常使用(未锁定)。

但是,如果我锁定手机并在大约 10 分钟后返回,状态栏中的位置图标和我的应用程序将不再获取位置更新。

我已经检查了应用程序崩溃,但没有崩溃报告。我的应用程序也仍然出现在应用程序列表中,所以我认为它没有崩溃。

如果我请求“始终”许可,GPS 是否应该永远保持打开状态。还是在手机休眠一段时间后操作系统将其关闭?

这是我的 plist 中的条目:

<key>NSLocationAlwaysUsageDescription</key>
<string></string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>

这是后台位置服务的屏幕截图:

enter image description here

这是我的自定义类,它是位置管理器委托(delegate):

@interface LocationDelegate ()
@property (nonatomic, strong) CLLocationManager *locationManager;
@end

@implementation LocationDelegate

+ (instancetype) singleton {
static LocationDelegate *delegate = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
delegate = [[self alloc] init];
});
return delegate;
}

- (id) init {
if (self = [super init]) {
// for now filter and accuracy are based on the same preference
_locationManager = [[CLLocationManager alloc] init];
_locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
_locationManager.delegate = self;

// Check for iOS 8
if ([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[_locationManager requestAlwaysAuthorization];
}

return self;
}

请注意,它是一个单例。那有关系吗?在我的应用程序在后台运行一段时间或暂停后,这个类是否会被清理?根据我的阅读,我不认为像这样的单例会被清理干净,因为它们是强有力的引用,所以我不认为这是问题所在......但我真的不知道为什么我在一定数量后停止获取位置时间。

编辑:

似乎我的位置管理器在一段时间后暂停了位置更新。我没有接到简历电话是个大问题。

我将 activityType 设置为默认值

CLActivityTypeOther

我可以尝试其他事件类型,看看是否会有所不同。但是,我依靠我的应用程序来处理步行和驾驶。

我想我遇到了同样的问题:

iPhone GPS in background never resumes after pause

最佳答案

不,它不一定继续在后台运行。默认情况下,pausesLocationUpdatesAutomatically 设置为 YES,这与 activityType(如果已设置)一起帮助操作系统确定何时可以安全地暂停位置更新以节省电量。您可以实现 locationManagerDidPauseLocationUpdates: 委托(delegate)来记录操作系统是否暂停了您的更新。

此外,需要说明的是,设置 requestAlwaysAuthorization 并不意味着 locationManager 会继续运行,它只是意味着您的应用可以从前台或后台或挂起模式启动 locationManager。

关于iOS 位置管理器在手机锁定约 10 分钟后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31151923/

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