获取国家呼叫前缀

只是想知道是否有简单的方法从用户的手机检索国家的电话代码

例如,我的应用程序想为用户预先填写国家/地区呼叫代码。

如果用户位于美国,则返回代码+1,中国为+83,澳大利亚为+61

我看了看,但我只能看到:

NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode = [locale objectForKey: NSLocaleCountryCode]; 

哪个返回国家代码的缩写,而不是呼叫前缀?

帮助表示赞赏!

请参阅RMPhoneFormat了解提供此信息的类以及格式化电话号码。

注意:这是我创build的。

通过使用coretelephony.framework你可以得到电话号码的国家代码。

 CTTelephonyNetworkInfo *info = [CTTelephonyNetworkInfo new]; CTCarrier *carrier = info.subscriberCellularProvider; NSLog(@"Country code is: %@",carrier.mobileCountryCode); 

这是一个代码来获得呼叫前缀

1)

 - (NSDictionary *)getCountryCodeDictionary { return [NSDictionary dictionaryWithObjectsAndKeys:@"972", @"IL", @"93", @"AF", @"355", @"AL", @"213", @"DZ", @"1", @"AS", @"376", @"AD", @"244", @"AO", @"1", @"AI", @"1", @"AG", @"54", @"AR", @"374", @"AM", @"297", @"AW", @"61", @"AU", @"43", @"AT", @"994", @"AZ", @"1", @"BS", @"973", @"BH", @"880", @"BD", @"1", @"BB", @"375", @"BY", @"32", @"BE", @"501", @"BZ", @"229", @"BJ", @"1", @"BM", @"975", @"BT", @"387", @"BA", @"267", @"BW", @"55", @"BR", @"246", @"IO", @"359", @"BG", @"226", @"BF", @"257", @"BI", @"855", @"KH", @"237", @"CM", @"1", @"CA", @"238", @"CV", @"345", @"KY", @"236", @"CF", @"235", @"TD", @"56", @"CL", @"86", @"CN", @"61", @"CX", @"57", @"CO", @"269", @"KM", @"242", @"CG", @"682", @"CK", @"506", @"CR", @"385", @"HR", @"53", @"CU", @"537", @"CY", @"420", @"CZ", @"45", @"DK", @"253", @"DJ", @"1", @"DM", @"1", @"DO", @"593", @"EC", @"20", @"EG", @"503", @"SV", @"240", @"GQ", @"291", @"ER", @"372", @"EE", @"251", @"ET", @"298", @"FO", @"679", @"FJ", @"358", @"FI", @"33", @"FR", @"594", @"GF", @"689", @"PF", @"241", @"GA", @"220", @"GM", @"995", @"GE", @"49", @"DE", @"233", @"GH", @"350", @"GI", @"30", @"GR", @"299", @"GL", @"1", @"GD", @"590", @"GP", @"1", @"GU", @"502", @"GT", @"224", @"GN", @"245", @"GW", @"595", @"GY", @"509", @"HT", @"504", @"HN", @"36", @"HU", @"354", @"IS", @"91", @"IN", @"62", @"ID", @"964", @"IQ", @"353", @"IE", @"972", @"IL", @"39", @"IT", @"1", @"JM", @"81", @"JP", @"962", @"JO", @"77", @"KZ", @"254", @"KE", @"686", @"KI", @"965", @"KW", @"996", @"KG", @"371", @"LV", @"961", @"LB", @"266", @"LS", @"231", @"LR", @"423", @"LI", @"370", @"LT", @"352", @"LU", @"261", @"MG", @"265", @"MW", @"60", @"MY", @"960", @"MV", @"223", @"ML", @"356", @"MT", @"692", @"MH", @"596", @"MQ", @"222", @"MR", @"230", @"MU", @"262", @"YT", @"52", @"MX", @"377", @"MC", @"976", @"MN", @"382", @"ME", @"1", @"MS", @"212", @"MA", @"95", @"MM", @"264", @"NA", @"674", @"NR", @"977", @"NP", @"31", @"NL", @"599", @"AN", @"687", @"NC", @"64", @"NZ", @"505", @"NI", @"227", @"NE", @"234", @"NG", @"683", @"NU", @"672", @"NF", @"1", @"MP", @"47", @"NO", @"968", @"OM", @"92", @"PK", @"680", @"PW", @"507", @"PA", @"675", @"PG", @"595", @"PY", @"51", @"PE", @"63", @"PH", @"48", @"PL", @"351", @"PT", @"1", @"PR", @"974", @"QA", @"40", @"RO", @"250", @"RW", @"685", @"WS", @"378", @"SM", @"966", @"SA", @"221", @"SN", @"381", @"RS", @"248", @"SC", @"232", @"SL", @"65", @"SG", @"421", @"SK", @"386", @"SI", @"677", @"SB", @"27", @"ZA", @"500", @"GS", @"34", @"ES", @"94", @"LK", @"249", @"SD", @"597", @"SR", @"268", @"SZ", @"46", @"SE", @"41", @"CH", @"992", @"TJ", @"66", @"TH", @"228", @"TG", @"690", @"TK", @"676", @"TO", @"1", @"TT", @"216", @"TN", @"90", @"TR", @"993", @"TM", @"1", @"TC", @"688", @"TV", @"256", @"UG", @"380", @"UA", @"971", @"AE", @"44", @"GB", @"1", @"US", @"598", @"UY", @"998", @"UZ", @"678", @"VU", @"681", @"WF", @"967", @"YE", @"260", @"ZM", @"263", @"ZW", @"591", @"BO", @"673", @"BN", @"61", @"CC", @"243", @"CD", @"225", @"CI", @"500", @"FK", @"44", @"GG", @"379", @"VA", @"852", @"HK", @"98", @"IR", @"44", @"IM", @"44", @"JE", @"850", @"KP", @"82", @"KR", @"856", @"LA", @"218", @"LY", @"853", @"MO", @"389", @"MK", @"691", @"FM", @"373", @"MD", @"258", @"MZ", @"970", @"PS", @"872", @"PN", @"262", @"RE", @"7", @"RU", @"590", @"BL", @"290", @"SH", @"1", @"KN", @"1", @"LC", @"590", @"MF", @"508", @"PM", @"1", @"VC", @"239", @"ST", @"252", @"SO", @"47", @"SJ", @"963", @"SY", @"886", @"TW", @"255", @"TZ", @"670", @"TL", @"58", @"VE", @"84", @"VN", @"1", @"VG", @"1", @"VI", nil]; } 

2)

 #pragma mark - Custom Method -(void)setDefaultCountryCode{ NSString *countryIdentifier = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode]; NSLog(@"%@",[NSString stringWithFormat:@"+%@",[[self getCountryCodeDictionary] objectForKey:countryIdentifier]]); } 

NSLocaleCountryCode是在ISO-3166中定义的国家代码,而不是调用代码。 您需要在别处find调用代码。

请参阅链接了解ISO3166 – >调用代码的完整列表。

我在cocoacontrols.com上遇到了一个更简单的解决scheme。

请检查iOS的国家/地区列表。

它有一个json文件,可以configuration更新更多的信息,并根据需要使用。

使用HMDiallingCode 。 它使用CoreLocation并反向地理编码来确定用户的国家,然后检索它的国际拨号代码。

您需要将所有国家/地区代码放在csv文件中,以便以后可以从该特定文件中读取国家/地区代码,并对特定国家/地区代码的数据进行sorting。 以下是国家代码的完整列表

 Afghanistan-93, Albania-355, Algeria-213, Andorra-376, Angola-244, Argentina-54, Armenia-374, Australia-61, Austria-43, Azerbaijan-994, Bahrain-973, Bangladesh-880, Belarus-375, Belgium-32, Belize-501, Benin-229, Bhutan-975, Bolivia-591, BosniaandHerzegovina-387, Botswana-267, Brazil-55, Brunei-673, Bulgaria-359, BurkinaFaso-226, Burundi-257, Cambodia-855, Cameroon-237, Canada-1, CapeVerde-238, CentralAfricanRepublic-236, Chad-235, Chile-56, China,People'sRepublicof-86, Colombia-57, Comoros-269, Congo,DemocraticRepublicofthe(CongoヨKinshasa)-243, Congo,Republicofthe(CongoヨBrazzaville)-242, CostaRica-506, Coted'Ivoire(IvoryCoast)-225, Croatia-385, Cuba-53, Cyprus-357, CzechRepublic-420, Denmark-45, Djibouti-253, Ecuador-593, Egypt-20, ElSalvador-503, EquatorialGuinea-240, Eritrea-291, Estonia-372, Ethiopia-251, Fiji-679, Finland-358, France-33, Gabon-241, Gambia,The-220, Georgia-995, Germany-49, Ghana-233, Greece-30, Guatemala-502, Guinea-224, Guinea-Bissau-245, Guyana-592, Haiti-509, Honduras-504, Hungary-36, Iceland-354, India-91, Indonesia-62, Iran-98, Iraq-964, Ireland-353, Israel-972, Italy-39, Japan-81, Jordan-962, Kazakhstan-7, Kenya-254, Kiribati-686, Korea,DemocraticPeople'sRepublicof(NorthKorea)-850, Korea,Republicof(SouthKorea)-82, Kuwait-965, Kyrgyzstan-996, Laos-856, Latvia-371, Lebanon-961, Lesotho-266, Liberia-231, Libya-218, Liechtenstein-423, Lithuania-370, Luxembourg-352, Macedonia-389, Madagascar-261, Malawi-265, Malaysia-60, Maldives-960, Mali-223, Malta-356, MarshallIslands-692, Mauritania-222, Mauritius-230, Mexico-52, Micronesia-691, Moldova-373, Monaco-377, Mongolia-976, Montenegro-382, Morocco-212, Mozambique-258, Myanmar(Burma)-95, Namibia-264, Nauru-674, Nepal-977, Netherlands-31, NewZealand-64, Nicaragua-505, Niger-227, Nigeria-234, Norway-47, Oman-968, Pakistan-92, Palau-680, Panama-507, PapuaNewGuinea-675, Paraguay-595, Peru-51, Philippines-63, Poland-48, Portugal-351, Qatar-974, Romania-40, Russia-7, Rwanda-250, Samoa-685, SanMarino-378, SaoTomeandPrincipe-239, SaudiArabia-966, Senegal-221, Serbia-381, Seychelles-248, SierraLeone-232, Singapore-65, Slovakia-421, Slovenia-386, SolomonIslands-677, Somalia-252, SouthAfrica-27, Spain-34, SriLanka-94, Sudan-249, Suriname-597, Swaziland-268, Sweden-46, Switzerland-41, Syria-963, Tajikistan-992, Tanzania-255, Thailand-66, Timor-Leste(EastTimor)-670, Togo-228, Tonga-676, Tunisia-216, Turkey-90, Turkmenistan-993, Tuvalu-688, Uganda-256, Ukraine-380, UnitedArabEmirates-971, UnitedKingdom-44, UnitedStates-1, Uruguay-598, Uzbekistan-998, Vanuatu-678, VaticanCity-379, Venezuela-58, Vietnam-84, Yemen-967, Zambia-260, Zimbabwe-263, Abkhazia-995, China,Republicof(Taiwan)-886, Somaliland-252, SouthOssetia-995, ChristmasIsland-61, Cocos(Keeling)Islands-61, NorfolkIsland-672, NewCaledonia-687, FrenchPolynesia-689, Mayotte-262, SaintBarthelemy-590, SaintMartin-590, SaintPierreandMiquelon-508, WallisandFutuna-681, CookIslands-682, Niue-683, Tokelau-690, Guernsey-44, IsleofMan-44, Jersey-44, BritishIndianOceanTerritory-246, BritishSovereignBaseAreas-357, FalklandIslands(IslasMalvinas)-500, Gibraltar-350, SaintHelena-290, HongKong-852, Macau-853, FaroeIslands-298, Greenland-299, FrenchGuiana-594, Guadeloupe-590, Martinique-596, Reunion-262, Aruba-297, NetherlandsAntilles-599, Svalbard-47, Ascension-247, TristandaCunha-290, PalestinianTerritories(GazaStripandWestBank)-970, WesternSahara-212, 

那么另一种经过validation的方法是为此调用WebService,您可以使用http://www.webservicex.net/country.asmx的GetISD WebMethod并通过当前位置的国家/地区。

通过这种方式,您可以确定从用户访问应用程序的国家/地区获得相关ISD ID。

其他方法是让你所有的ISO国家在你的SQLite数据库,然后你根据当前位置的国家进行查找,并显示相应的条目。

如何检索用户的当前城市名称? 是使用CLLocationManager查找国家名称的方法。

希望这可以帮助,

谢谢,Jigar

我创build了一个包含国家代码和调用代码的NSDictionary ,可以用来查找调用代码。

使用你的上面的代码和NSDictionary你会做这样的事情…

 NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode = [locale objectForKey: NSLocaleCountryCode]; NSString *callingCode = [dictCodes objectForKey:countryCode];