CoreLocation 查看 requestAlwaysAuthorization() 是否触发了弹出窗口

问题描述

在我的入职流程中,我首先使用 requestWhenInUseAuthorization,这里用户有 3 个选项:

  1. 在使用中允许
  2. 允许一次
  3. 不允许

但是在回调 didChangeAuthorization 状态中,“Allow while in use”和“Allow once”选项没有区别,都显示为“authorizedWhenInUse”。

真正的问题出现在我的下一个屏幕上,我要求 requestAlwaysAuthorization。如果用户选择“允许一次”,则不会弹出询问用户是否愿意

一个。更改为始终允许 湾使用中保持

从这里开始,我的用户被困在了入职流程中。

我的问题和 TL;DR:有没有办法知道用户按下“允许一次”和“使用时允许”之间的区别,或者有没有办法查看是否向用户显示警报视图?

解决方法

不是最优雅的解决方案,但有效。 requestAlwaysAuthorization() 之后

DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
    if UIApplication.shared.applicationState.rawValue == 0 {
    // No location permission popup appeared
    }   
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...