目前我的应用程序只请求一次使用当前位置的权限。如果用户不允许,除非他在常规设置中重置位置警告,否则不会再次询问他。我想让用户有机会在应用程序内稍后授予此权限。换句话说,如果他按下某个按钮,对话框应该再次出现。这可能吗?
谢谢你的建议。
目前我的应用程序只请求一次使用当前位置的权限。如果用户不允许,除非他在常规设置中重置位置警告,否则不会再次询问他。我想让用户有机会在应用程序内稍后授予此权限。换句话说,如果他按下某个按钮,对话框应该再次出现。这可能吗?
谢谢你的建议。
[CLLocationManager locationServicesEnabled]
只是告诉您设备上是否启用了位置服务。
根据这个文件。
[CLLocationManager authorizationStatus]
将返回其中之一
typedef enum {
kCLAuthorizationStatusNotDetermined = 0,
kCLAuthorizationStatusRestricted,
kCLAuthorizationStatusDenied,
kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;
如果结果是kCLAuthorizationStatusDenied
您可以通过将他发送到 settings.app 来告诉用户允许使用位置服务
新答案:现在在 iOS 8 中,您可以以编程方式打开设备设置应用程序:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
如果您支持较早的 iOS 版本并希望确保可以处理此问题,请执行以下操作:
if (&UIApplicationOpenSettingsURLString != NULL) {
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}
else {
//Earlier iOS version
}
旧答案:我不知道强制出现本机弹出窗口(并允许用户跳转到设置页面)。
您可以使用以下方法来确定用户是否允许您的应用使用位置服务:CLLocationManager:
+(CLAuthorizationStatus)authorizationStatus
您还可以了解是否在设备级别全局启用了位置服务:CLLocationManager:
+(BOOL)locationServicesEnabled