我知道如果我可以使用核心位置服务并不会太困难(因为你知道可疑(自我关注)用户通常会为不信任的应用程序禁用位置服务).
我在网上搜索了几个小时,并得到以下解决方案的摘要,我需要你的帮助来决定哪一个可能是我最好的选择,或者你还有其他更好的选择.
使用[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 – 如何在不使用核心位置服务的情况下获取用户当前的城市名称?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)