【问题标题】:iOS13 Provisional Location PermissioniOS13 临时位置权限
【发布时间】:2019-12-25 18:45:39
【问题描述】:

由于苹果已经推迟了“始终允许”权限,并且只有操作系统可以并且会根据自己的方便性要求该权限,所以很难理解所有场景是什么。

如果您看到 WWDC 视频:https://developer.apple.com/videos/play/wwdc2019/705/

这家伙在 04:14 明确说,“你要求 requestAlwaysAuthorization,苹果为你提供了“While In Use”的最大选项,但同时委托回调说,该应用程序具有“始终允许权限” ”。这可以按预期工作,并且我的应用程序只有在我保持打开状态时才会获取位置更新。他说,在 04:35,将地理围栏活动作为后台跟踪/始终允许的要求启动。这就是让我感到困惑的地方,如果我将我的应用程序置于后台,位置更新就会停止。为什么即使我的代表回电收到“始终允许”权限,我仍被要求为已经在移动的用户设置地理围栏?

在 05:22,巩固临时始终允许权限的弹出窗口仅出现(在操作系统方便的情况下),当您锁定设备并解锁它,然后将其置于上文所述的背景中。但是中间的所有数据都丢失了。我的应用程序跟踪用户的行程,这将完全取消记录用户在车辆中的移动的有效用例。

即使我跟随视频并在应用程序进入后台然后开始移动时创建地理围栏,在我锁定和解锁设备之前什么都不会发生。这似乎没什么用。

【问题讨论】:

    标签: ios core-location ios13 wwdc


    【解决方案1】:

    即使我的代表回电收到“始终允许”权限,为什么仍要求我为已经在移动的用户设置地理围栏?

    你不是。你误解了视频。他举了一个使用 Always 权力的例子。这只是一个例子。

    在 05:22,巩固临时始终允许权限的弹出窗口仅出现(在操作系统方便的情况下),当您锁定设备并解锁它,然后将其置于上文所述的背景中。但是中间的所有数据都丢失了。

    不,不是。听听他在视频中说的话。如果用户现在接受 Always,则会传递保留的委托消息。

    这将完全终止记录用户在车辆中的移动的有效用例。

    不,不会。该用例与您之前所说的任何内容无关。如果您的应用程序正在前台跟踪位置并以后台位置模式进入后台并继续跟踪,则它正在使用中。因此,您所需要的只是在使用时。所以所有那些 Always 的东西都与你无关。

    这就是视频的重点。除非您需要,否则不要要求 Always。如果您确实要求它,请使用它,否则您将不会得到它。但你似乎不需要它。

    【讨论】:

    • 我总是在代码本身中收到授权回调,即使用户点击“使用中”权限也是如此。如果是这种情况,我的应用程序旨在在您开始以一定速度移动时立即跟踪用户。当该逻辑触发并且用户将应用程序置于后台时,更新将停止。锁定和解锁设备会弹出“更改为始终允许”弹出窗口。这有多好笑?在应用程序处于后台时跟踪用户的位置是我的应用程序的“始终的权力”,当苹果的核心位置 api 向我发送“始终”回调时,它应该以这种方式工作。
    • 我建议您先尝试一下。我什至看不到顶部的蓝色条,这对于“使用中”权限是正常的,并且一旦您将应用程序置于后台模式,位置更新就会完全停止。在尝试之前我不会问这个问题。
    • 好吧,你能显示一些代码吗?您必须在进入后台时将位置管理器置于后台模式。
    • 我明天会尝试制作样品。但我从来不必将我的位置管理器置于后台模式。一旦我得到了总是授权。确实更改了授权状态,即使我将应用程序放在 bg 中,我也会得到更新。它在 ios 12 中以这种方式开箱即用。现在我也得到了相同的委托身份验证状态(如视频中所述),但是一旦你进入 bg 模式,位置更新就会停止。
    • @nr5 我也面临你说的同样的问题。您是否找到任何替代方法来解决此问题?即使在背景或前景中也能始终获取位置?
    猜你喜欢
    • 2018-03-03
    • 2015-10-23
    • 2014-12-16
    • 2017-10-17
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    相关资源
    最近更新 更多