ios 获取国家/地区呼叫前缀

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13116019/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-30 20:58:33  来源:igfitidea点击:

Getting country calling prefix

iphoneobjective-cios

提问by

Just wondering whether there are easy ways to retrieve country calling codefrom a user's phone.

只是想知道是否有简单的方法可以从用户的电话中检索国家/地区电话代码

For example, my app would like to pre-fill country calling code for the users.

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

If the user is located in the U.S. the code +1 will be returned, +83 for China, +61 for Australia etc.

如果用户位于美国,将返回代码 +1,china +83,澳大利亚 +61 等

I had a look around but I could only see:

我环顾四周,但我只能看到:

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

Which returns the abbreviation for the country code, not the calling prefix?

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

Help is appreciated!

帮助表示赞赏!

采纳答案by rmaddy

See RMPhoneFormatfor a class that provides this information as well as formatting phone numbers.

有关提供此信息以及格式化电话号码的类,请参阅RMPhoneFormat

Note: this was created by me.

注意:这是我创建的。

回答by Hardik Thakkar

Here is a code to get calling prefix

这是获取呼叫前缀的代码

1)

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)

2)

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

回答by kalyan711987

By using coretelephony.frameworkyou can get the country code of the phone number.

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

CTTelephonyNetworkInfo *info = [CTTelephonyNetworkInfo new];

CTCarrier *carrier = info.subscriberCellularProvider;

NSLog(@"Country code is: %@",carrier.mobileCountryCode);

回答by Meet

I have come across one more such simple solution on cocoacontrols.com.

我在 cocoacontrols.com 上又遇到了一个这样简单的解决方案。

Please check the Country List for iOS.

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

It has a json file which can be configured to update more information and used as required.

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

回答by lqs

The NSLocaleCountryCodeis the country code defined in ISO-3166, not the calling code. You need to find the calling code elsewhere.

NSLocaleCountryCode是ISO-3166国家代码,而不是调用代码。您需要在别处找到调用代码。

See Linkfor a complete list of ISO3166 -> calling code.

有关ISO3166 -> 调用代码的完整列表,请参阅链接

回答by Hesham

Use HMDiallingCode. It uses CoreLocation and reverse geocoding to determine the country of the user, then retrieve it's international dialling code.

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

回答by Den

Swift

迅速

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

回答by Jigar Pandya

Well an alternate and proven way is to call WebService for this you can use http://www.webservicex.net/country.asmx's GetISD WebMethod and pass current location's country.

好吧,另一种行之有效的方法是为此调用 WebService,您可以使用http://www.webservicex.net/country.asmx的 GetISD WebMethod 并传递当前位置的国家/地区。

This way you can be sure that you get the relevant ISD ID for the country from where user accessing the app.

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

Other way is to have all the ISO countries in you SQLite database and then you perform lookup based on current location's country and show the respective entry.

另一种方法是将所有 ISO 国家/地区都放在 SQLite 数据库中,然后根据当前位置的国家/地区执行查找并显示相应的条目。

How to retrieve user's current city name?is way to find country name using CLLocationManager.

如何检索用户当前的城市名称?是使用CLLocationManager.

Hope this helps,

希望这可以帮助,

Thanks, Jigar

谢谢,吉格

回答by Singh

you need to put all the country codes in a csv file , so that later on you can read the country codes from that particular file and sort the data for a particular country code . following is the complete list of country codes

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

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'Ivtheitroade(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,

回答by AlBeebe

I created an NSDictionary containing country codes and calling codesthat you could use to lookup the calling code.

我创建了一个包含国家代码和调用代码NSDictionary,您可以使用它们来查找调用代码。

Using your above code and the NSDictionary you would do something like this...

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

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