【问题标题】:Request location updates permissions iOS请求位置更新权限 iOS
【发布时间】:2015-12-07 19:46:26
【问题描述】:

我目前使用[locationManager requestAlwaysAuthorization];NSLocationAlwaysUsageDescription 将我的应用设置为始终请求位置服务

这很好用,但是我想提供仅在使用应用程序时使用位置服务的选项,如下面的屏幕截图所示。

我尝试添加NSLocationWhenInUseUsageDescription,但这会覆盖他总是要求并且只在使用时发出警报,关于谁在设置中提供这两个选项的任何想法?

【问题讨论】:

标签: ios core-location cllocationmanager location-services


【解决方案1】:

内置的 iOS 警报只允许一个级别的权限,并且只会询问用户一次。假设大多数应用程序只需要一个或另一个。无论如何,如果您想让这两个选项都显示在“设置”中,您必须请求Always 许可。

更重要的是: Always 设置实际上只供需要后台位置更新的应用程序使用。因此,除非您的应用程序需要它,否则您不应该要求它。此外,使用后台定位模式会导致您的应用在应用审核过程中受到更严格的审查。

【讨论】:

    【解决方案2】:

    首先使用您自己的对话框询问用户两个选项 - 始终/在使用应用程序时。然后根据用户的选择调用相应的权限请求。

    要么:

    [locationManager requestAlwaysAuthorization];
    

    或:

    [locationManager requestWhenInUseAuthorization];
    

    两者都在 plist 中是有效的,所以这不是问题。取决于您在代码中实际请求它的时间。

    虽然维护起来会有点棘手,所以良好的代码结构至关重要。

    【讨论】:

    • 我让它为“始终”工作,但我希望用户能够进入位置服务设置并更改为“使用中”,我已经阅读了两次请求位置服务每个都不起作用,因为警报只显示一次。
    • 另外,如果我同时拥有 info.plist 的两个键,则只会调用整个正在使用的通知,而不是始终调用我想要调用的那个。
    • 好吧,如果你想改变你已经问过的地方,那可能是个问题。我建议的解决方案仅适用于“新”用户。在你已经展示了对话的地方,你什么也做不了……除了走自己的路——用自己的对话来解释用户需要做什么。
    猜你喜欢
    • 2014-11-17
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 2018-07-29
    • 2023-03-12
    • 2017-07-06
    相关资源
    最近更新 更多