Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 Can';t endBackgroundTask:不存在标识符为*的后台任务,或者该任务可能已结束_Ios_Objective C_Core Location_Uibackgroundtask - Fatal编程技术网

Ios Can';t endBackgroundTask:不存在标识符为*的后台任务,或者该任务可能已结束

Ios Can';t endBackgroundTask:不存在标识符为*的后台任务,或者该任务可能已结束,ios,objective-c,core-location,uibackgroundtask,Ios,Objective C,Core Location,Uibackgroundtask,我的应用通过以下方式监控用户位置更新(不一定是重大位置更改): 当应用程序(在模拟器中)位于前台时,一切正常,但当将其挂起到后台(而不是终止)时,我会将此错误记录到日志中: 无法结束后台任务:不存在标识符为*的后台任务,或者该任务可能已结束 此错误的所有其他答案都与位置服务无关,只是一般的后台任务问题。因此,似乎应该进行以下3项设置,以便后台位置更新正常工作。 执行此操作并修复问题: 在info.plist中设置MakeNSLocationAlwaysUsageDescription键(值作为权

我的应用通过以下方式监控用户位置更新(不一定是重大位置更改):

当应用程序(在模拟器中)位于前台时,一切正常,但当将其挂起到后台(而不是终止)时,我会将此错误记录到日志中:

无法结束后台任务:不存在标识符为*的后台任务,或者该任务可能已结束


此错误的所有其他答案都与位置服务无关,只是一般的后台任务问题。

因此,似乎应该进行以下3项设置,以便后台位置更新正常工作。 执行此操作并修复问题:

  • info.plist
    中设置Make
    NSLocationAlwaysUsageDescription
    键(值作为权限的原因)
  • 确保调用
    [someLocationManager requestAlwaysAuthorization]请求许可时
  • 在目标设置的
    功能
    部分的
    后台模式下启用
    位置更新
    。这个不确定,但听起来不错

  • 享受吧

    从用户处获得位置授权时添加以下代码。因为苹果更改了iOS9的默认AllowsBackgroundLocationUpdatesNo

    'if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
        locationManager.allowsBackgroundLocationUpdates = YES;
    }'
    

    @AshishKakkad这很好。你没有提到这三个步骤是否真的修复了错误。是吗?“…应该这样做,以便后台位置更新正常工作”,所以是的,它解决了问题。我编辑它是为了更清楚。发布你自己的问题/答案是可以的,但至少让你的“问题”成为一个实际的问题。不用说你会回答你自己的问题。我认为假装这是一个真正的问题是没有好处的。提出一个真正的问题——这就是问题所在,我也这么做了。
    'if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) {
        locationManager.allowsBackgroundLocationUpdates = YES;
    }'