iOS獲取手機號

網上常見的方案是使用CoreTelephony的私有API

extern NSString*CTSettingCopyMyPhoneNumber();

@implementation

+(NSString *)myNumber{
    return CTSettingCopyMyPhoneNumber();
}

不過這方案並沒有什麼卵用,私有API是不會通過蘋果的AppStore審覈的。

後來發現愛奇藝和bilibili的App都是可以獲取到用戶手機號的,還可以一鍵登錄。

查了一下,發現原來是運營商提供的功能,運營商提供SDK,可以讓開發者獲取到當前手機使用的手機卡號,直接使用這個號碼進行登錄,這就是一鍵登錄。

三大運營商的開放平臺

移動 - 互聯網能力開放平臺(http://dev.10086.cn)

電信 - 天翼賬號開放平臺(https://id.189.cn)

聯通 - WO+ 開放平臺(http://open.wo.com.cn)

 

授權流程大致如下

(1)SDK初始化

調用 SDK 的初始化方法,傳入項目在平臺上的 AppKey 和 AppSecret。

(2)喚起授權頁

調用 SDK 喚起授權接口。SDK 會先向運營商發起獲取手機號掩碼的請求,請求成功後跳轉到授權頁。授權頁會顯示手機號掩碼以及運營商協議給用戶確認。

(3)同意授權並登錄

用戶同意相關協議,點擊授權頁面的登錄按鈕,SDK 會請求本次取號的 token,請求成功後將 token 返回給客戶端。

(4)取號

將獲取到的 token 發送到我們自己的服務器,由服務器攜帶 token 調用運營商一鍵登錄的接口,調用成功就返回手機號碼了。服務器用手機號進行登錄或註冊操作,返回操作結果給客戶端,完成一鍵登錄。

 

如果沒有插電話卡,或者在關閉移動蜂窩網絡的情況下,是無法完成認證的,這時需要兼容傳統的登錄方式,允許用戶在認證失敗的情況下手動輸入手機號登錄。

三大運營商都有自己的SDK,如果要兼容三大運營商,就需要分別接入三個SDK,也可以接入整合了三大運營商認證能力的第三方SDK:

阿里雲(https://help.aliyun.com/product/75010.html)

極光(https://www.jiguang.cn/identify)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章