Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CLLocationManager停止在后台更新位置,即使使用“标记”;地点“;在应用程序属性中设置_Ios_Objective C_Cllocationmanager - Fatal编程技术网

Ios CLLocationManager停止在后台更新位置,即使使用“标记”;地点“;在应用程序属性中设置

Ios CLLocationManager停止在后台更新位置,即使使用“标记”;地点“;在应用程序属性中设置,ios,objective-c,cllocationmanager,Ios,Objective C,Cllocationmanager,我的问题是,当应用程序进入后台模式时,我的应用程序不会更新用户位置 我已经阅读了很多关于UIBackgroundModes的内容,并且已经在应用程序中设置了flan“位置”属性 即使在那之后,我的应用程序也会在后台删除位置管理器,并停止更新用户的位置 我是否遗漏了什么?在iOS中,在后台模式下使用应用程序受到严格限制。 通常,当在UIBackgroundModes中设置了正确的属性时,每次位置更新都会调用您的应用程序。通过将所需的精度设置为较低(例如,kClocationAccuracyBest

我的问题是,当应用程序进入后台模式时,我的应用程序不会更新用户位置

我已经阅读了很多关于UIBackgroundModes的内容,并且已经在应用程序中设置了flan“位置”属性

即使在那之后,我的应用程序也会在后台删除位置管理器,并停止更新用户的位置


我是否遗漏了什么?

在iOS中,在后台模式下使用应用程序受到严格限制。 通常,当在UIBackgroundModes中设置了正确的属性时,每次位置更新都会调用您的应用程序。通过将所需的精度设置为较低(例如,
kClocationAccuracyBest
),即使位置稍有更新,您的应用程序也会启动


但是在一段时间后,如果应用程序没有被带回前台,应用程序将被完全关闭,位置服务将被关闭(后者仅从iOS 6开启)。由于无法使应用程序在后台不断从iOS获取更新,我放弃了我的项目。

在iOS中,在后台模式下使用应用程序受到严格限制。 通常,当在UIBackgroundModes中设置了正确的属性时,每次位置更新都会调用您的应用程序。通过将所需的精度设置为较低(例如,
kClocationAccuracyBest
),即使位置稍有更新,您的应用程序也会启动


但是在一段时间后,如果应用程序没有被带回前台,应用程序将被完全关闭,位置服务将被关闭(后者仅从iOS 6开启)。由于无法使应用程序在后台不断从iOS获取更新,我放弃了我的项目。

位置不改变意味着没有位置,意味着没有事件,也没有行动。

如果iphone移动并设置了标准位置模式(
startUpdatingLocation
) 通常情况下,您每秒会得到一个GPS定位。(desiredAccuracy=
KCallocationAccuracyBest
KCallocationAccuracybestforNavigation

如果位置服务是由
startMonitoringSignificantLocationChanges
启动的,那么您将只获得由基站更改确定的位置。

此外,由于ios6存在延迟模式,因此应用程序在后台不会得到位置更改,但稍后会同时得到所有位置。(我个人没有这种模式的经验)。但在ios6及更高版本中也应考虑到这一点

来自CLLocationManager描述

在iOS 6及更高版本中,您可以在 你的应用程序在后台。建议您使用此选项 在应用程序稍后可以处理数据的情况下使用此功能 没有任何问题。例如,一个跟踪用户行为的应用程序 徒步旅行路线上的位置可能会推迟更新,直到用户徒步旅行 确定距离,然后一次处理所有点。推迟 更新可以让你的应用保持休眠状态,从而节省电量 更长的时间


不改变位置意味着没有位置,意味着没有事件,也没有行动。

如果iphone移动并设置了标准位置模式(
startUpdatingLocation
) 通常情况下,您每秒会得到一个GPS定位。(desiredAccuracy=
KCallocationAccuracyBest
KCallocationAccuracybestforNavigation

如果位置服务是由
startMonitoringSignificantLocationChanges
启动的,那么您将只获得由基站更改确定的位置。

此外,由于ios6存在延迟模式,因此应用程序在后台不会得到位置更改,但稍后会同时得到所有位置。(我个人没有这种模式的经验)。但在ios6及更高版本中也应考虑到这一点

来自CLLocationManager描述

在iOS 6及更高版本中,您可以在 你的应用程序在后台。建议您使用此选项 在应用程序稍后可以处理数据的情况下使用此功能 没有任何问题。例如,一个跟踪用户行为的应用程序 徒步旅行路线上的位置可能会推迟更新,直到用户徒步旅行 确定距离,然后一次处理所有点。推迟 更新可以让你的应用保持休眠状态,从而节省电量 更长的时间


在iOS5中,确保使用
locationManager:didUpdateToLocation:fromLocation:
。这是一种即使在后台也能让你的应用程序请求位置服务的方法。在iOS6中,您应该使用
locationManager:didUpdateLocations:
,因为
locationManager:didUpdateLocation:fromLocation:
在iOS6中已被弃用

在iOS6中,请确保添加以下内容,否则当系统认为您未使用位置服务时,将关闭该服务:

if ([self.locationManager respondsToSelector:@selector(pausesLocationUpdatesAutomatically)]) {
    self.locationManager.pausesLocationUpdatesAutomatically = NO;
}

在iOS5中,确保使用
locationManager:didUpdateToLocation:fromLocation:
。这是一种即使在后台也能让你的应用程序请求位置服务的方法。在iOS6中,您应该使用
locationManager:didUpdateLocations:
,因为
locationManager:didUpdateLocation:fromLocation:
在iOS6中已被弃用

在iOS6中,请确保添加以下内容,否则当系统认为您未使用位置服务时,将关闭该服务:

if ([self.locationManager respondsToSelector:@selector(pausesLocationUpdatesAutomatically)]) {
    self.locationManager.pausesLocationUpdatesAutomatically = NO;
}

我遇到了相同的问题,基本上您必须在CLLocationManager上将pausesLocationUpdatesAutomatically标记设置为“否”。

我遇到了相同的问题,基本上您必须在CLLocationManager上将pausesLocationUpdatesAutomatically标记设置为“否”。

包含“位置”在UIBackgroundModes中,键并不阻止系统暂停应用程序,但它会告诉系统,只要有新的位置数据要传递,就应该唤醒应用程序。因此,该键有效地让应用程序在后台运行,以处理位置upda