有没有办法知道手机所在的时区/国家?我不喜欢使用定位服务。
这样做的目的是自动路由呼叫。如果用户在美国,我希望应用程序默认呼叫基于美国的呼叫中心。如果用户在另一个国家,我希望它默认到他们的呼叫中心。
谢谢!
发布于 2013-10-05 04:27:06
您可以使用以下命令获取本地时区的名称:
NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSString *tzName = [timeZone name];名称将类似于Australia/Sydney、Europe/Zurich或America/Denver。因为听起来你可能只关心欧洲大陆,这可能就是你所需要的。
如果你需要更多:在http://www.iana.org/time-zones获取官方时区数据库。下载tzdata2013g.tar.gz (或者当您阅读本文时,下载tzdataYYYYx.tar.gz的最新版本)。归档中有一个名为zone.tab文件,它为每个时区提供了一个lat/long,例如:
CH +4723+00832 Europe/Zurich+4723+00832表示纬度=+47°23“,经度=+8°23”。
更新:在某些情况下(我不确定是哪种情况),时区名称可能是zone.tab中没有列出的较旧样式的名称,如US/Pacific。要处理这些问题,还需要一个名为backward的文件,该文件提供旧名称到当前名称的翻译。
将zone.tab转换成你的应用程序可以使用的东西是由你决定的。搜索结果远不及定位服务准确,但会给出一个大概的概念。但是,它不能保证是。它会在以下几种情况下失败:
发布于 2013-10-05 00:53:18
更新:在最后一条评论之后,我正在修改我的答案。
您可以反向查找电话的IP以查找地理位置。这里有several rest APIs available。
我不推荐这样做,因为这可能会导致Apple拒绝你的应用程序。安全的选择是通过苹果提供的location services
发布于 2014-12-04 19:57:13
NSTimeZone *timeZoneLocal = [NSTimeZone localTimeZone];
NSString *strTimeZoneName = [timeZoneLocal name];
or
NSTimeZone *timeZoneLocal = [NSTimeZone defaultTimeZone];
NSString *strTimeZoneName = [timeZoneLocal name];https://stackoverflow.com/questions/19186666
复制相似问题