原始需求是,在启动应用程序时,移动应用程序将获取用户当前位置,精确到城市。根据城市,服务器/应用程序客户端将提供与城市相关的内容。
如果我能使用核心定位服务(因为您知道,可疑的(自我关注的)用户通常会禁用定位服务,以避免不太信任的应用程序),那么这不会太困难。
我已经在网上搜索了几个小时,并总结了以下解决方案,需要您的帮助来决定哪个是最佳选择,或者是否有其他更好的选择。
使用[NSlocale autoupdatingCurrentLocale]
缺点:
谢谢。
如果我能使用核心定位服务(因为您知道,可疑的(自我关注的)用户通常会禁用定位服务,以避免不太信任的应用程序),那么这不会太困难。
我已经在网上搜索了几个小时,并总结了以下解决方案,需要您的帮助来决定哪个是最佳选择,或者是否有其他更好的选择。
使用[NSlocale autoupdatingCurrentLocale]
缺点:
a. 苹果文档中对返回值的解释是:“该区域设置由当前用户选择的系统区域设置的设置与用户在“系统偏好设置”中指定的任何自定义设置叠加而成。” 我不理解“用户在“系统偏好设置”中指定的任何自定义设置”是什么意思。 参考链接
b. 这个值可能会误导,并且与用户实际所在的城市/国家无关。
评论:如果有人能够解释一下如何根据用户的设置来更改区域设置,我将不胜感激。
获取当前iPhone时区
NSTimeZone *localTime = [NSTimeZone systemTimeZone];
NSLog(@"Current local timezone is %@",[localTime name]);
缺点:
- a. 与上述b项相同,因为用户始终可以指定而不是让系统自动更新时区。
- b. 精度受损,只列出首都城市。
评论:不是很有前途,但易于实现
使用基于IP的位置检测Web服务
根据我的阅读,该过程将涉及应用程序向服务器发送请求,服务器将记录请求的IP
。(不认为从应用程序本身可以正确获取其自己的IP
,因为它可能在本地网络中)基于通过某些第三方服务记录的IP
(具有IP
数据库或其他可用API),将返回城市信息回到客户端。
缺点:
- a. 我从未实现过这样的事情,不知道对于移动应用程序是否可行。
- b. 即使可能,也不知道它是否比核心位置服务更快。
评论:如果您知道iOS应用程序可以这样做,请告诉我。
请您提供任何想法或者更好的解决方案,如果您有的话。非常感谢您。谢谢。