How can whatsapp know country code upon first run on iphone

后端 未结 3 2042
闹比i
闹比i 2020-12-28 19:43

When I first install whatsapp on iphone, when I open it, the first screen already knows my sim cards location and shows the country code. How does whatsapp know this ? As ap

3条回答
  •  南笙
    南笙 (楼主)
    2020-12-28 20:10

    My two cents :-) using Swift 3

    Note: this method will work even if user is not having a sim in iPhone.

    Create a new Property List file IntlDialingCodes.plist and paste following lines:

    
    
    
        
            ac
            247
            ad
            376
            ae
            971
            af
            93
            ag
            1
            ai
            1
            al
            355
            am
            374
            an
            599
            ao
            244
            aq
            672
            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
            bm
            1
            bn
            673
            bo
            591
            br
            55
            bs
            1
            bt
            975
            bw
            267
            by
            375
            bz
            501
            ca
            1
            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
            cy
            357
            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
            gh
            233
            gi
            350
            gl
            299
            gm
            220
            gn
            224
            gp
            590
            gq
            240
            gr
            30
            gt
            502
            gu
            1
            gw
            245
            gy
            592
            hk
            852
            hn
            504
            hr
            385
            ht
            509
            hu
            36
            id
            62
            ie
            353
            il
            972
            in
            91
            io
            246
            iq
            964
            ir
            98
            is
            354
            it
            39
            ja
            81
            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
            1
            kz
            7
            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
            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
            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
            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
            sk
            421
            sl
            232
            sm
            378
            sn
            221
            so
            252
            sr
            597
            st
            239
            sv
            503
            sx
            1
            sy
            963
            sz
            268
            tc
            1
            td
            235
            tg
            228
            th
            66
            tj
            992
            tk
            690
            tm
            993
            tn
            216
            to
            676
            tr
            90
            tt
            1
            tv
            688
            tw
            886
            tz
            255
            ua
            380
            ug
            256
            uk
            44
            us
            1
            uy
            598
            uz
            998
            va
            379
            vc
            1
            ve
            58
            vg
            1
            vi
            1
            vn
            84
            vu
            678
            wf
            681
            ws
            685
            xt
            800
            ye
            967
            za
            27
            zm
            260
            zw
            263
        
        
    

    Paste following class or just getDialingCode method in your Helper class, remember to import CoreTelephony:

    import Foundation
    import CoreTelephony
    
    class Helper {
    
        static func getDialingCode() {
            let countryCode = CTTelephonyNetworkInfo().subscriberCellularProvider?.isoCountryCode ?? Locale.current.regionCode!
            let path = Bundle.main.path(forResource: "IntlDialingCodes", ofType: "plist")!
            let dict = NSDictionary(contentsOfFile: path)!
    
            if let dialingCode = dict[countryCode.lowercased()] as? String {
                print("Dialing code for \"\(countryCode.uppercased())\" is \"+\(dialingCode)\"")
            } else {
                print("Dialing code for \"\(countryCode.uppercased())\" not found in plist file")
            }
        }
    
    }
    

    Usage:

    Helper.getDialingCode()
    

提交回复
热议问题