在 Apple 的内置语音邮件应用程序中,当它在您的通讯录中找到一个它无法识别的电话号码时,它会在该号码下方显示一个大概位置,大概是基于电话号码。他们是怎么做到的??我猜手机上有一个包含区号和交换号码的大型数据库,每个都映射到一个城市或地区名称。有谁知道应用程序是否可以通过公共 API 访问此映射?
有很多样板代码用于将邮政编码映射到城市,但我看不到与区号/交换相同的东西。有任何想法吗?
在 Apple 的内置语音邮件应用程序中,当它在您的通讯录中找到一个它无法识别的电话号码时,它会在该号码下方显示一个大概位置,大概是基于电话号码。他们是怎么做到的??我猜手机上有一个包含区号和交换号码的大型数据库,每个都映射到一个城市或地区名称。有谁知道应用程序是否可以通过公共 API 访问此映射?
有很多样板代码用于将邮政编码映射到城市,但我看不到与区号/交换相同的东西。有任何想法吗?
我创建了一个 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"
有许多网站会告诉您给定区号的一个或多个城市。Verizon 有一个,其他网站如http://www.allareacodes.com/和http://www.411.com/area_zip_codes做同样的事情。您也可以在本地电话簿的前面找到相同的信息。
由于可能的区号少于 1000 个,因此我会寻找可以包含在程序中的区号列表。这样,无论网络连接是否可用,您的应用程序的这一方面都将起作用。
他们可能会从 Telcordia (trainfo.com) 等公司购买商业产品。我在 GreatData.com 工作,我们维护区号和前缀(也称为“NPA/NXX”),以及主要城市(费率中心)州、时区、运营公司等,但我们没有有纬度/经度。(Telcordia 会)。
我不相信您可以在免费产品中找到您正在寻找的数据。我们花费了大量时间手动验证我们的数据。