大佬教程收集整理的这篇文章主要介绍了ios – 如何在不使用核心位置服务的情况下获取用户当前的城市名称?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道如果我可以使用核心位置服务并不会太困难(因为你知道可疑(自我关注)用户通常会为不信任的应用程序禁用位置服务).
我在网上搜索了几个小时,并得到以下解决方案的摘要,我需要你的帮助来决定哪一个可能是我最好的选择,或者你还有其他更好的选择.
使用[NSlocale autoupdatingCurrentLocale]
缺点:
> a.来自apple文档的调用返回值的说明:“语言环境是由当前用户选择的系统语言环境的设置形成的,并覆盖了用户在”系统偏好设置“中指定的任何自定义设置.”从中我不明白什么是“用户在”系统偏好设置“中指定的”自定义设置“
reference link
> b.该值可能具有误导性,与用户当前的实际城市/国家根本无关.
评论:如果有人能够解释我如何根据用户的设置更改区域设置,我将不胜感激.
获取当前的iPhone TimeZone
NSTimeZone *localTime = [NSTimeZone systemTimeZone]; NSLog(@"Current local timezone is %@",[localTime name]);
缺点:
> a.与上面的项目b相同,因为用户始终可以指定而不是让系统自动更新时区.
> b.精度得到满足,只列出首都.
评论:不是很有希望但很容易实现
使用基于IP的位置检测webservice
根据我的阅读,该过程将涉及应用程序向服务器发送请求,服务器将记录请求的IP.(不要认为从应用程序本身可以正确获取自己的IP,因为它可能在本地网络内)基于通过某些第三方服务(使用IP数据库或其他一些可用的API)记录的IP,它将城市信息返回给客户端.
缺点:
> a.我从来没有实现过这样的东西,不知道它是否适用于移动应用程序.
> b.即使有可能,也不知道它是否比核心位置服务更快.
评论:如果您知道iOS应用程序可以这样做,请告诉我.
如果您知道,请给我任何想法或建议任何更好的解决方案.
非常感谢你.
如果您必须在没有核心位置的情况下自动了解CITY,您提到的前两个选项“区域设置”和“时区”都是无用的,因为每个选项都包含大量城市.此外,正如您所提到的,它们依赖于用户的设置.
因此,最好使用GeoIP或某些此类服务对Web服务请求的IP地址进行反向地理编码.您可以在网上找到很多关于此的讨论和参考.
以上是大佬教程为你收集整理的ios – 如何在不使用核心位置服务的情况下获取用户当前的城市名称?全部内容,希望文章能够帮你解决ios – 如何在不使用核心位置服务的情况下获取用户当前的城市名称?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。