iOS 11从“更新位置服务”;在使用“时”;至;“始终”;

iOS 11从“更新位置服务”;在使用“时”;至;“始终”;,ios,swift,location,cllocationmanager,Ios,Swift,Location,Cllocationmanager,我最近正在进行一个应用程序更新,以便在后台添加位置服务 该应用程序目前支持“在使用该应用程序时”位置服务,我想使支持“始终允许” 我要记住,这个特性应该涵盖两种场景 尚未下载应用程序的新用户 当前用户,已授予应用程序在使用应用程序时接收设备位置的权限 场景1运行得很好,但对于场景2,发生了一些奇怪的事情 当我启动应用程序时,就在启动屏幕之后,iOS会提示用户升级应用程序的授权级别,有两个选项,“仅在使用应用程序时”和“始终允许” 我想稍后再升级,而不是在启动屏幕之后 有人知道为什么会发生这种情况

我最近正在进行一个应用程序更新,以便在后台添加位置服务

该应用程序目前支持“在使用该应用程序时”位置服务,我想使支持“始终允许”

我要记住,这个特性应该涵盖两种场景

  • 尚未下载应用程序的新用户

  • 当前用户,已授予应用程序在使用应用程序时接收设备位置的权限

  • 场景1运行得很好,但对于场景2,发生了一些奇怪的事情

    当我启动应用程序时,就在启动屏幕之后,iOS会提示用户升级应用程序的授权级别,有两个选项,“仅在使用应用程序时”和“始终允许”

    我想稍后再升级,而不是在启动屏幕之后


    有人知道为什么会发生这种情况吗?

    这个问题通过在所有CoreLocation库上设置一个符号断点来解决

    怎么做

    1-在didFinishLaunchingWithOptions的第一行上放置断点

    2-启动你的应用程序

    3-在控制台面板上,插入此命令以打断CoreLocation库的每个方法

    lldb: break set -r CoreLocation
    
    4-恢复你的应用程序

    现在,调试将在从CoreLocation库调用的每个函数处停止

    lldb: break set -r CoreLocation
    

    问题是,一个依赖项正在检查后台模式,而我没有意识到这一点,因此触发了警报。

    您何时初始化位置管理器/请求授权?您可能无法实际控制此更新的授权警报何时出现,但它可能是在重新启动应用程序后首次尝试使用位置服务时触发的。在特定的视图控制器中,所有位置都会被处理。这是我处理升级身份验证级别的地方。但是这个警报出现了,这个VC甚至没有实例化。似乎并不是说应该立即显示此警报(而是似乎只有在您请求新授权时才会显示)。因此,我首先要绝对确保您在发布时没有要求授权或任何比您预期的更早的事情。这是我过去三天的做法。我别无选择=/Hi@shim,经过深入调试,我发现了问题所在。我的一个依赖项是检查后台模式是否可用以及app plist文件中的位置键。这真的很难找到,因为Xcode搜索在project的框架内找不到任何东西。即使框架代码已经存在。我在整个CoreLocation库上发现了一个符号断点。