目前我的应用程序只会在一开始请求一次当前位置的权限。如果用户不同意,除非重新在通用设置中重置位置警告,否则不会再次请求权限。我希望在应用程序内部给用户一个机会稍后授权此权限。换句话说,如果用户按下某个按钮,对话框应该再次出现。这是否可行?
感谢您的建议。
目前我的应用程序只会在一开始请求一次当前位置的权限。如果用户不同意,除非重新在通用设置中重置位置警告,否则不会再次请求权限。我希望在应用程序内部给用户一个机会稍后授权此权限。换句话说,如果用户按下某个按钮,对话框应该再次出现。这是否可行?
感谢您的建议。
[CLLocationManager locationServicesEnabled]
仅告诉您设备上的位置服务是否已启用。[CLLocationManager authorizationStatus]
将返回其中之一。typedef enum {
kCLAuthorizationStatusNotDetermined = 0,
kCLAuthorizationStatusRestricted,
kCLAuthorizationStatusDenied,
kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;
如果结果是kCLAuthorizationStatusDenied
,你可以告诉用户通过将他送到设置应用程序来允许使用位置服务。新答案:现在在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
+(BOOL)locationServicesEnabled