如果我的应用程序正在请求GPS位置,则会向用户显示一个对话框,询问权限。 我的应用程序也检查授权,如果用户不允许使用位置服务,我还会提示一个对话框通知用户进行设置。
现在的问题是,当我first
启动应用时,用户还没有allow
,但检查代码也已执行,因此它会在系统隐私对话框下方显示一个对话框。现在有两种情况:
Don't allow
,系统对话框被解除,我的对话框出现,说app没有找到权限,这是对的。Allow
,我的也会显示,因为它就在系统对话框下方。我现在只能将两部分代码放在不同的地方,但有没有更好或更合理的方法来解决这个问题?也就是说,如果用户点击允许,我会知道。
一些想法: 1.如果我能知道系统的隐私对话框已经呈现(不是更好的方式,因为我只想知道位置隐私 2.如何知道位置隐私对话框的演示者,因此我将使用它来检查它是否已呈现对话框 3.如何知道用户在显示隐私对话框后用户做了什么操作,用户可以点击解除。答案 0 :(得分:0)
从位置管理器实施 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
}
}