gpt4 book ai didi

permissions - 有没有办法在iOS13中主动触发.always coreLocation权限?

转载 作者:行者123 更新时间:2023-12-04 22:39:22 29 4
gpt4 key购买 nike

在iOS13下,当您为coreLocation请求.always权限(以启用后台位置(例如,地理围栏或iBeacons))时,该应用仅被授予“始终临时设置”权限,这不允许它在后台使用coreLocation。在稍后的阶段,原则上OS应该弹出一个许可请求以切换到.always许可。我还没有经历过它,而且(在Apple开发人员论坛上看)似乎没有人找到持续触发此对话框弹出窗口的方法。

我已经要求.always(只能提供无用的“总是临时”权限),然后尝试“升级”为真正的.always权限,但没有任何 react (没有弹出窗口,没有权限更改)

我还尝试按照本书的WWDC要求,始终要求。始终接收临时请求,然后相信OS会在某个阶段显示对话框-没有运气。

更麻烦的是,即使我将我的应用程序的权限设置手动更改为真正的.always权限,该应用程序仍无法在后台对位置进行定位。

如果要求始终提供.always并始终获得“临时”许可,我希望在某个阶段显示位置对话框的OS提出“真实” .always许可。尽管在10倍的背景下进入了地理围栏,但两周内都没有发生这种情况。

我还希望许可“升级”流程能够正常工作,尽管在WWDC视频和coreLocation文档中已作了解释,但事实并非如此。

如果苹果按原样继续开发iOS 13,我希望许多在后台合理定位位置的应用程序将完全无法正常工作。

在这方面有人取得任何进展吗?我已向Apple提出了“反馈”,但希望在9月的iOS 13 GM之前不会及时收到他们的回应。

最佳答案

当您在iOS 13中向用户请求其“始终”位置权限时:

locationManager.requestAlwaysAuthorization()

1)用户将收到此警报:

Request permission dialog

2)如果您要求始终许可,并且用户选择 Allow While in Use,则您的应用将认为它获得了 .authorizedAlways许可,但这就是 provisional .authorizedAlways许可。

3)接下来,当您的应用通常会在后台接收位置事件时,iOS不会直接在后台用事件启动您的应用,而是等待它认为用户没有做任何事情,然后会显示此对话框:

Always location dialog permission

根据视频,这可能需要一段时间( 6:39):

The prompt that the user can grant your app always authorization from will occur later. {...} Core Location waits for a time when we think that the user is not busy in order to maximize their ability to understand what's going on and minimize the chance that they'll give a get-out-of-my-way kind of response.



在此过程中(在应用程序进入后台和显示提示之间),您将不会收到位置更新事件:

They'll be delivered if you app receives always authorization ultimately and not if it receives a when in use authorization. But they also won't be delivered if the user just hasn't chosen yet.

So, during this time, if more events are generated on that basis, if you're monitoring requests, then those events will displace the ones that came earlier, and the earlier ones will be dropped. And then finally Core Location will drop the event part for anything that's become just too old.



4)然后,当用户选择 Change to Always Allow时, .authorizedAlways权限将变为最终权限(除非用户将来更改其设置)。您将开始接收位置事件。

除非(5)用户选择 Keep Only While Using,否则最终许可将成为 .authorizedWhenInUse

以下是演示文稿的概述(编号为我的):

Location permissions flow ios 13

另一个指向完整视频的链接: https://developer.apple.com/videos/play/wwdc2019/705

这能回答您的问题吗?

If I change manually the permission setting to a real .always permission for my app, the app continues to be unable to range locations in the background.



事实并非如此。您是否在系统偏好设置中进行了更改?

尝试使用GM种子,也许他们修复了有关此流程的一些错误。

关于permissions - 有没有办法在iOS13中主动触发.always coreLocation权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57374293/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com