5

在 Apple 的内置语音邮件应用程序中,当它在您的通讯录中找到一个它无法识别的电话号码时,它会在该号码下方显示一个大概位置,大概是基于电话号码。他们是怎么做到的??我猜手机上有一个包含区号和交换号码的大型数据库,每个都映射到一个城市或地区名称。有谁知道应用程序是否可以通过公共 API 访问此映射?

有很多样板代码用于将邮政编码映射到城市,但我看不到与区号/交换相同的东西。有任何想法吗?

4

3 回答 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"
于 2013-12-27T15:31:02.753 回答
1

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

由于可能的区号少于 1000 个,因此我会寻找可以包含在程序中的区号列表。这样,无论网络连接是否可用,您的应用程序的这一方面都将起作用。

于 2012-02-13T06:25:40.353 回答
1

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

我不相信您可以在免费产品中找到您正在寻找的数据。我们花费了大量时间手动验证我们的数据。

于 2012-10-31T01:24:43.003 回答