我可以使用System.全球化的RegionInfo.CurrentRegion来检测基于xamarin表单的项目设备中的用户区域吗?当我使用它时,检测到的区域是基于我在设备设置中设置的设备语言。如果我不应该使用它,请引导我在正确的方向实现用户区域的地理检测。注意: 1.我还要求基于设备语言设置应用程序语言。(在某个地方,我看到了regioninfo基于cultureinfo中的区域性集来检测区域) 2.我基本上想要检测用户是否在欧洲
如果有经验的人指点方向,那就很好了。
发布于 2019-06-26 15:19:21
我通过对我的xamarin.forms应用程序采用以下方法使它工作起来
对于检测位置,我为Android和iOS - https://learn.microsoft.com/en-gb/xamarin/essentials/geolocation?context=xamarin%2Fandroid&tabs=android使用了Xamarin.Essentials地理定位插件。
对于检测设备语言,我偶然发现了官方本地化的Xamarin文档,这些文档对我帮助很大:
Android - https://learn.microsoft.com/en-us/xamarin/android/app-fundamentals/localization
iOS - https://learn.microsoft.com/en-gb/xamarin/ios/app-fundamentals/localization/#language
发布于 2019-04-30 18:21:26
你应该没事..。
iOS & macOS在框架中是特殊的大小写,因为它通过本机调用获得CurrentRegion
NSLocale.CurrentLocale.CountryCodere:https://developer.apple.com/documentation/foundation/nslocale?language=objc
因此,不可能不获得在iOS中定义的ISO国家代码,因为它是OS自身设置的一部分,是不可跳过的(我认为iOS macOS甚至不支持在本地OS级别定义不变区域性的方法)。
在Android上,执行默认的Mono/..Net代码并提取国家:
Thread.CurrentThread.CurrentCulture注意: Mono运行时本身正在确定线程区域性的初始设置(当然,这在代码中是可编程更改的)。
因此,假设设备的区域设置为已知的国家,则可以使用RegionInfo.CurrentRegion。
但是您应该知道,CultureInfo.InvariantCultureId是一种有效的文化,因此返回ISO国家的IV是可能的:
iso2Name = "IV";
iso3Name = "ivc";
win3Name = "IVC";
nativeName = englishName = "Invariant Country";就我个人而言,我不知道有一个欧亚国家没有被不包括在Android设备中的直接ISO代码所覆盖(但是在欧洲和亚洲有很多Android原始设备制造商,所以也许(?)你可以得到一个IV返回.)。
https://stackoverflow.com/questions/55926132
复制相似问题