iOS上的电话区号如何转换为城市名称

5
在苹果内置的语音信箱应用程序中,当它在你的通讯录中找不到一个电话号码时,它会在该号码下显示一个大致位置,可能是根据电话号码确定的。他们是怎么做到的呢?我猜手机上有一个区号和交换机号的大型数据库,每个都映射到一个城市或地区名称。有人知道是否可以通过公共API访问此映射吗?
虽然有很多模板代码用于将邮政编码映射到城市,但我没有看到有多少代码将区号/交换机号转化为城市。有什么想法吗?

一个类似的问题是在这个问题的一天后被问到的:http://stackoverflow.com/questions/9284212/how-to-locate-any-mobile-number-using-iphone-application/18930785#18930785 - newenglander
3个回答

2
我创建了一个包含区号和位置信息的plist文件:areacodes.plist。要使用它,请按照以下步骤操作: 如果您只想使用plist文件: 1. 将plist文件添加到您的项目中。 2. 加载该文件:
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@"areacodes" ofType:@"plist"];
NSDictionary *areaCodeDict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

3. 使用已加载的字典。键是区号,值是位置:

NSString *areaCode = @"801";
NSString *location = [self.areaCodeConversion objectForKey:areaCode];
NSLog(@"%@",location); // prints utah

使用包含的类:

1. 将下载的文件夹添加到您的项目中。

2. 使用包含的类来访问plist信息:

#import "AreaCodes.h"
...
AreaCodes *areaCodes = [[AreaCodes alloc] init];
NSString *location = [areaCodes getLocationForCode:@"801"];
NSLog(@"%@",location);
// prints "Utah"

这很棒.. 除了文件不存在之外.. 帮我点赞... 帮助那个文件! - Alex Gray
@alexgray 感谢您指出这一点。我已经修复了链接并添加了一些源文件。 - Jbryson

1

他们可能会从像Telcordia(trainfo.com)这样的公司购买商业产品。我在GreatData.com工作,我们维护区号和前缀(也称为“NPA / NXX”),以及主要城市(速率中心)状态,时区,运营公司等,但我们没有纬度/经度信息(Telcordia有)。

我不认为您可以在免费产品中找到您要查找的数据。我们花费了大量时间手动验证我们的数据。


1

有许多网站可以告诉您特定区号的城市或城市。Verizon有一个, 其他网站如 http://www.allareacodes.com/http://www.411.com/area_zip_codes 做同样的事情。您也可以在当地电话簿的前面找到相同的信息。

由于可能的区号少于1000个,我建议您寻找一个区号列表,并将其包含在您的程序中。这样,无论是否有网络连接,您的应用程序的这个方面都能正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接