Getting country calling prefix

后端 未结 10 1242
耶瑟儿~
耶瑟儿~ 2020-12-28 21:04

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

For example, my app would like to pre-fill country

相关标签:
10条回答
  • 2020-12-28 21:42

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

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

    NSLocale *locale = [NSLocale currentLocale];
    NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
    NSString *callingCode = [dictCodes objectForKey:countryCode];
    
    0 讨论(0)
  • 2020-12-28 21:44

    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"]
    
    0 讨论(0)
  • 2020-12-28 21:50

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

    CTTelephonyNetworkInfo *info = [CTTelephonyNetworkInfo new];
    
    CTCarrier *carrier = info.subscriberCellularProvider;
    
    NSLog(@"Country code is: %@",carrier.mobileCountryCode);
    
    0 讨论(0)
  • 2020-12-28 21:51

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

    Note: this was created by me.

    0 讨论(0)
  • 2020-12-28 21:54

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

    Please check the Country List for iOS.

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

    0 讨论(0)
  • 2020-12-28 21:54

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

    0 讨论(0)
提交回复
热议问题