由谁展示 iOS 的隐私对话框

by whom presenting iOS's privacy dialog

如果我的应用正在请求 GPS 位置,则会向用户显示一个对话框以请求许可。 而且我的应用程序也会检查授权,如果用户不允许使用定位服务,我也会提示一个对话框通知用户进行设置。

现在的问题是,当我first启动应用程序时,用户还没有allow,但检查代码也执行了,所以它会在系统隐私下方显示一个对话框对话。现在它有两种情况:

  1. 用户点击Don't allow,系统对话框消失,出现我的对话框,说app没有定位权限,没错
  2. 但如果用户单击 Allow,我的遗嘱也会显示,因为它就在系统对话框下方。

我现在只能把两部分代码放在不同的地方,但是有没有更好或更合理的方法来解决这个问题?也就是说,如果用户点击允许,我就会知道。

一些想法: 1.如果我能知道系统的隐私对话框一直在呈现(不是更好的方法,因为我只想知道位置隐私 2.如何知道location privacy dialog的presenter,所以我会用它来检查它是否有presenter a dialog 3. 如何知道隐私对话框显示后用户做了什么操作,用户可以点击关闭。

从位置管理器实施 didChangeAuthorizationStatus 委托方法并在那里检查授权

func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
switch status {
case .NotDetermined:
    // show alert here
    break
case .AuthorizedWhenInUse:

    break
case .AuthorizedAlways:

    break
case .Restricted:
      // show alert here

    break
case .Denied:
      // show alert here
    break
default:
    break
}
}