9

我正在使用 Crashlytics 进行内部应用程序测试,并注意到一件有趣的事情。我在我的应用程序中使用地理定位并请求用户的权限。当客户第一次安装应用程序时,他会看到弹出的默认 Apple 地理定位权限。一切正常。但是,如果用户从手机中删除应用程序并重新安装......在这种情况下,当我请求权限时,弹出窗口不会出现但地理位置正在工作。如何?这是某种新功能还是 iOS 问题?我正在使用 iOS 11.0.3 进行测试。我在文档中没有找到任何内容,并且在以前的 iOS 版本中也没有看到这种行为。看起来 iOS 只是记住了应用程序并在我请求用户权限而不是显示弹出窗口时自动启用地理定位。也许有人对此有答案?

4

1 回答 1

8

检查授权状态时,您的代码模式可能存在错误,您看到的行为可能是由于 iOS 缓存应用程序的位置权限。

在您的代码中,确保检查授权状态(通过 authorizationStatus() 方法),并在当前状态为 .notDetermined (kCLAuthorizationStatusNotDetermined) 时继续请求位置授权

iOS 也会缓存应用程序的授权状态。如果您想重置您的位置权限以进行测试,您可以将您的位置隐私设置设置为出厂默认设置:进入设置 > 常规 > 重置,然后点击重置位置和隐私。重置您的位置和隐私设置后,应用将停止使用您的位置,直到您授予它们权限。

不幸的是,没有开发人员对此进行控制。 应用程序的权限缓存处于不断发展的阶段,我们正在努力寻找最佳的用户体验,因此您最近可能已经注意到一些变化。此外,将有一个宽限期,应用程序卸载到重新安装时间可能会有所不同。

如果您最近观察到的应用行为符合您的预期(在相同版本的 iOS 上您观察到您的应用行为不同),并且卸载/重新安装时间差异是即时的(例如您可能如何测试您的应用),请让我知道哪些应用程序,我会看看我是否可以挖掘一些信息。

于 2018-07-05T11:48:38.413 回答