假设我关闭了地图中的位置。我去地图。苹果会弹出一些东西并说该位置不可用。当用户按下设置时,它会进入设置。
我们如何弹出该消息?
我知道我可以使用 UIAlertView。但是,该消息似乎是苹果标准。此外,当按下设置时,人们会直接设置。我不明白我怎么能做出这样的事情,或者我可以吗?
当我们尝试获取位置但无权这样做时,Apple似乎只是自动显示该弹出窗口。
好吧,在我的情况下不是。在我的情况下,如果应用程序没有这样做的权限,它只会挂起等待永远不会出现的权限。
假设我关闭了地图中的位置。我去地图。苹果会弹出一些东西并说该位置不可用。当用户按下设置时,它会进入设置。
我们如何弹出该消息?
我知道我可以使用 UIAlertView。但是,该消息似乎是苹果标准。此外,当按下设置时,人们会直接设置。我不明白我怎么能做出这样的事情,或者我可以吗?
当我们尝试获取位置但无权这样做时,Apple似乎只是自动显示该弹出窗口。
好吧,在我的情况下不是。在我的情况下,如果应用程序没有这样做的权限,它只会挂起等待永远不会出现的权限。
当应用程序第一次想要使用位置服务时,系统会显示该警报。用户可以选择启用它,但不会再次显示该警报。作为开发人员,您也没有能力再次展示它。
您可以做的是检查authorizationStatus
on CLLocationManager
:
if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorized) {
// show alert telling the user to enable location services for this app
}
但是,您无法直接打开“设置”应用。
检查位置服务是否已启用。如果未启用位置服务,请创建一个带有位置服务消息的自己的 UIAlertView。
if([CLLocationManager locationServicesEnabled] &&
[CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
// Show alert
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(alertView.tag == 1)
{
// set Url
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]];
}
}