【问题标题】:CMMotionActivityManager - authorizationStatus "refresh"CMMotionActivityManager - 授权状态“刷新”
【发布时间】:2019-10-15 22:28:15
【问题描述】:

当在手机的“设置”>“隐私”>“运动与健身”中禁用“健身追踪”状态时,我正在检查 CMMotionActivityManager 的 authorizationStatus()。对于系统范围的限制,我得到了正确的“受限”状态。

当我启用“健身追踪”并将我的应用从后台返回到前台时,authorizationStatus() 仍然返回“受限”。如果我刷出/终止应用程序并重新启动,它会更改授权状态。

有没有办法在将应用程序从后台带到前台时刷新authorizationStatus()。

谢谢!

【问题讨论】:

  • 否,在设置中更改授权状态不会导致应用崩溃。我必须手动终止应用程序才能重新启动。
  • 在我看来(也可能是你的),如果用户从限制更改为授予并且您没有崩溃,并且当您再次询问授权状态时获得过时的信息,那是一个错误并且你应该报告它。但是,我要补充一点,您永远不应该只相信授权状态告诉您的内容;除非您通过尝试使用活动管理器“逗弄”系统,否则什么都不会发生。你在这样做吗?
  • 换句话说,你应该开始更新或查询活动不管你从授权状态调用中​​得到什么结果。如果您未获得授权,则不会发生任何事情,也不会造成任何伤害。 (您将在完成处理程序上按顺序收到错误。)
  • 谢谢,无论授权状态如何,我都尝试通过启动活动更新来“搔痒”。它仍然没有刷新状态。这似乎是一个错误。让我报告一下,看看苹果怎么说。谢谢!
  • 只是确认我也看到了与 AG 相同的结果(状态不是“刷新”)。由于切换全局运动权限时应用程序不会崩溃,我想我将只显示一个对话框,告诉用户自己重新启动应用程序。当然,最好的用户体验将取决于实施/产品。

标签: ios swift core-motion


【解决方案1】:

我遇到了同样的问题,这种行为仅发生在用户向您的应用授予运动数据权限之前。一旦您的应用第一次授予权限,那么如果在设备级别切换动作权限,iOS 将终止您的应用(但当且仅当您的应用在某个时候授予权限)。因此,一旦您授予权限,您的应用就会出现在动作权限列表中(见下图),如果是这样,iOS 将在切换开关时终止。

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2016-07-11
    相关资源
    最近更新 更多