【发布时间】:2014-07-11 01:55:14
【问题描述】:
所以最初的要求是在应用启动时,移动应用将用户当前的位置精确到城市。基于城市,服务器/应用客户端会给出城市相关的内容。
我知道如果我可以使用核心定位服务并不会太困难(因为你知道可疑(自我关注)用户通常会为不那么信任的应用禁用定位服务)。
我已经在网上搜索了几个小时,并获得了以下解决方案的摘要,我需要您的帮助来决定哪一个可能是我的最佳选择,或者您是否还有其他更好的选择。
使用[NSlocale autoupdatingCurrentLocale]
缺点:
a.来自苹果文档的调用返回值的解释:“区域设置由当前用户选择的系统区域设置与用户在系统偏好设置中指定的任何自定义设置覆盖。”我不明白什么是“用户在系统偏好设置中指定的自定义设置” reference link
b.此值可能具有误导性,并且与用户当前的实际城市/国家完全无关。
cmets:如果有人能解释一下如何根据用户的设置更改语言环境,我将不胜感激。
获取当前的 iPhone 时区
NSTimeZone *localTime = [NSTimeZone systemTimeZone];
NSLog(@"Current local timezone is %@",[localTime name]);
缺点:
- 一个。与上面的 b 项相同,因为用户始终可以指定而不是让系统自动更新时区。
- 乙。精度受到影响,只会列出首都。
cmets:前景不大,但很容易实现
使用基于 IP 的位置检测网络服务
根据我的阅读,该过程将涉及应用程序向服务器发送请求,服务器将记录请求的IP。(不要认为应用程序本身可以正确获取自己的IP,因为它可能在里面本地网络)基于通过一些第三方服务记录的IP(带有IP db或其他一些可用的API),它将城市信息返回给客户端。
缺点:
- 一个。我从来没有实现过这样的东西,不知道这对于移动应用是否可行。
- 乙。就算有可能,也不知道是不是比核心定位服务快。
cmets:如果您知道 iOS 应用可以这样做,请告诉我。
如果您知道,请给我任何想法或建议任何更好的解决方案。
非常感谢。
【问题讨论】:
标签: ios objective-c location locale