Xamarin iOS如何检查位置服务是否关闭或应用程序级设备位置是否关闭
一般来说,我对Xamarin iOS和移动开发都是新手。 我有一个需要位置服务的应用程序,在我的视图控制器上有一个按钮,可以将用户带到应用程序的位置设置,但是,如果主设备位置关闭,用户将无法使用应用程序级别的位置设置执行任何操作 我在我的按钮点击事件中使用此代码将用户带到设置页面Xamarin iOS如何检查位置服务是否关闭或应用程序级设备位置是否关闭,ios,xamarin,xamarin.ios,Ios,Xamarin,Xamarin.ios,一般来说,我对Xamarin iOS和移动开发都是新手。 我有一个需要位置服务的应用程序,在我的视图控制器上有一个按钮,可以将用户带到应用程序的位置设置,但是,如果主设备位置关闭,用户将无法使用应用程序级别的位置设置执行任何操作 我在我的按钮点击事件中使用此代码将用户带到设置页面 if(UIDevice.CurrentDevice.CheckSystemVersion(8,0)) { NSString settingsString=UIApplication.OpenSettingsUrlStr
if(UIDevice.CurrentDevice.CheckSystemVersion(8,0))
{
NSString settingsString=UIApplication.OpenSettingsUrlString;
NSUrl url=新的NSUrl(设置字符串);
UIApplication.SharedApplication.OpenUrl(url);
}
我想知道是否有办法检查设备级位置服务是否关闭,并将用户转到该设置页面,而不是应用程序级位置设置,反之亦然
另外,如果禁用设备级位置服务,如何将用户带到位置设置屏幕。我尝试了一些组合,但我不确定NSUrl将是什么 欢迎来到移动和Xamarin!是的,您可以添加几个Nuget软件包来帮助您做到这一点。越来越受欢迎的是Xamarin Essentials
如中所示,只需尝试获取位置,它将自行处理权限,如果您面临PermissionException,则可以按原样打开设置!快乐编码欢迎使用移动和Xamarin!是的,您可以添加几个Nuget软件包来帮助您做到这一点。越来越受欢迎的是Xamarin Essentials
如中所示,只需尝试获取位置,它将自行处理权限,如果您面临PermissionException,则可以按原样打开设置!快乐编码检查设备级位置权限:
bool deviceLevel = CLLocationManager.LocationServicesEnabled;
public void CheckAuthorization(CLLocationManager manager, CLAuthorizationStatus status)
{
switch (status)
{
case CLAuthorizationStatus.Authorized | CLAuthorizationStatus.AuthorizedAlways | CLAuthorizationStatus.AuthorizedWhenInUse:
Console.WriteLine("Access");
break;
case CLAuthorizationStatus.Denied | CLAuthorizationStatus.NotDetermined | CLAuthorizationStatus.Restricted:
Console.WriteLine("No Access");
break;
default:
Console.WriteLine("No Access");
break;
}
}
文件如下:
要检查应用程序级别的位置权限,请执行以下操作:
bool deviceLevel = CLLocationManager.LocationServicesEnabled;
public void CheckAuthorization(CLLocationManager manager, CLAuthorizationStatus status)
{
switch (status)
{
case CLAuthorizationStatus.Authorized | CLAuthorizationStatus.AuthorizedAlways | CLAuthorizationStatus.AuthorizedWhenInUse:
Console.WriteLine("Access");
break;
case CLAuthorizationStatus.Denied | CLAuthorizationStatus.NotDetermined | CLAuthorizationStatus.Restricted:
Console.WriteLine("No Access");
break;
default:
Console.WriteLine("No Access");
break;
}
}
文件如下:
更新:
请看下面两条线索中的答案:和
有人说
避免在应用程序中使用“prefs:root”或“App prefs:root”,否则
应用程序将被应用程序商店拒绝。只需打开设置页面
您无法直接打开设备位置权限,App Store规则不允许
只需使用
UIApplication.opensetingsurlstring
打开设置页面。检查设备级位置权限:
bool deviceLevel = CLLocationManager.LocationServicesEnabled;
public void CheckAuthorization(CLLocationManager manager, CLAuthorizationStatus status)
{
switch (status)
{
case CLAuthorizationStatus.Authorized | CLAuthorizationStatus.AuthorizedAlways | CLAuthorizationStatus.AuthorizedWhenInUse:
Console.WriteLine("Access");
break;
case CLAuthorizationStatus.Denied | CLAuthorizationStatus.NotDetermined | CLAuthorizationStatus.Restricted:
Console.WriteLine("No Access");
break;
default:
Console.WriteLine("No Access");
break;
}
}
文件如下:
要检查应用程序级别的位置权限,请执行以下操作:
bool deviceLevel = CLLocationManager.LocationServicesEnabled;
public void CheckAuthorization(CLLocationManager manager, CLAuthorizationStatus status)
{
switch (status)
{
case CLAuthorizationStatus.Authorized | CLAuthorizationStatus.AuthorizedAlways | CLAuthorizationStatus.AuthorizedWhenInUse:
Console.WriteLine("Access");
break;
case CLAuthorizationStatus.Denied | CLAuthorizationStatus.NotDetermined | CLAuthorizationStatus.Restricted:
Console.WriteLine("No Access");
break;
default:
Console.WriteLine("No Access");
break;
}
}
文件如下:
更新:
请看下面两条线索中的答案:和
有人说
避免在应用程序中使用“prefs:root”或“App prefs:root”,否则
应用程序将被应用程序商店拒绝。只需打开设置页面
您无法直接打开设备位置权限,App Store规则不允许
只需使用
UIApplication.opensetingsurlstring
打开设置页面。您可以检查用户是否在设置级别禁用了位置服务,然后检查应用程序级别:
如果(!CLLocationManager.LocationServicesEnabled)
{
Console.WriteLine(“位置服务已关闭,请转到设置”);
//这可能会使用以下字符串拒绝您的应用程序
if(UIDevice.CurrentDevice.CheckSystemVersion(10,0))
{
UIApplication.SharedApplication.OpenUrl(新的NSUrl(“App-Prefs:root=General”);
}
其他的
{
UIApplication.SharedApplication.OpenUrl(新的NSUrl(“prefs:root=General”);
}
}
else if(CLLocationManager.Status==CLAuthorizationStatus.Denied||
CLLocationManager.Status==CLAuthorizationStatus.NotDetermined||
CLLocationManager.Status==CLAuthorizationStatus.Restricted)
{
Console.WriteLine(“位置服务仅针对您的应用关闭,进入应用设置”);
OpenUrl(新的NSUrl(UIApplication.opensetingsurlstring));
}
在打开系统设置或应用程序设置方面,UIApplication.opensetingsurlstring
将根据文档转到应用程序设置:
UIApplicationOpenSettingsURLString
用于创建可以传递给openURL:方法的URL。当您打开根据此字符串生成的URL时,系统将启动设置应用程序并显示应用程序的自定义设置(如果有)
您可以使用以下字符串:
prefs:root=General
或iOS 10及以上版本
应用程序优先级:根=常规
但是苹果可能会拒绝你的应用,tbh我认为不值得仅仅因为这个原因而尝试进入设置,而是取决于你。你可以检查用户是否在设置级别禁用了位置服务,然后检查应用级别:
如果(!CLLocationManager.LocationServicesEnabled)
{
Console.WriteLine(“位置服务已关闭,请转到设置”);
//这可能会使用以下字符串拒绝您的应用程序
if(UIDevice.CurrentDevice.CheckSystemVersion(10,0))
{
UIApplication.SharedApplication.OpenUrl(新的NSUrl(“App-Prefs:root=General”);
}
其他的
{
UIApplication.SharedApplication.OpenUrl(新的NSUrl(“prefs:root=General”);
}
}
else if(CLLocationManager.Status==CLAuthorizationStatus.Denied||
CLLocationManager.Status==CLAuthorizationStatus.NotDetermined||
CLLocationManager.Status==CLAuthorizationStatus.Restricted)
{
Console.WriteLine(“位置服务仅针对您的应用关闭,进入应用设置”);
OpenUrl(新的NSUrl(UIApplication.opensetingsurlstring));
}
在打开系统设置或应用程序设置方面,UIApplication.opensetingsurlstring
将根据文档转到应用程序设置:
UIApplicationOpenSettingsURLString
用于创建可以传递给openURL:方法的URL。当您打开根据此字符串构建的URL时,th