Obtención del prefijo de país de llamada

Solo me pregunto si hay maneras fáciles de recuperar el código de llamadas del país desde el teléfono de un usuario.

Por ejemplo, a mi aplicación le gustaría completar previamente el código de llamada del país para los usuarios.

Si el usuario se encuentra en los EE. UU. Se devolverá el código +1, +83 para China, +61 para Australia, etc.

Eché un vistazo pero solo pude ver:

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

¿Cuál devuelve la abreviatura del código de país, no el prefijo de llamada?

¡La ayuda es apreciada!

Consulte RMPhoneFormat para get una class que brinde esta información y formatee numbers de teléfono.

Nota: esto fue creado por mí.

Al usar coretelephony.framework puede get el código de país del número de teléfono.

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

Aquí hay un código para llamar al prefijo

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]]); } 

El NSLocaleCountryCode es el código de país definido en ISO-3166, no el código de llamada. Necesita encontrar el código de llamada en otra parte.

Vea el enlace para get una list completa de ISO3166 -> código de llamada.

Me he encontrado con una solución más simple en cocoacontrols.com.

Comtesting la list de países para iOS.

Tiene un file json que se puede configurar para actualizar más información y utilizarla según sea necesario.

Use HMDiallingCode . Utiliza CoreLocation y geoencoding inversa para determinar el país del usuario, luego recupera su código de marcado internacional.

necesita poner todos los códigos de país en un file csv, para que más adelante pueda leer los códigos de país de ese file en particular y orderar los datos para un código de país en particular. La siguiente es la list completa de los códigos de país.

 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, 

Bueno, una forma alternativa y comprobada es llamar a WebService para que pueda usar GetISD WebMethod de http://www.webservicex.net/country.asmx y pasar el país de la location actual.

De esta forma, puede estar seguro de que obtiene la identificación ISD correspondiente para el país desde donde el usuario accede a la aplicación.

Otra forma es tener todos los países ISO en su database SQLite y luego realizar búsquedas basadas en el país de la location actual y mostrar la input respectiva.

¿Cómo recuperar el nombre de la ciudad actual del usuario? Es una manera de encontrar el nombre del país usando CLLocationManager .

Espero que esto ayude,

Gracias Jigar

Creé un NSDictionary que contiene códigos de país y códigos de llamadas que podría usar para search el código de llamada.

Usando su código anterior y el NSDictionary, haría algo como esto …

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