iOS获取手机号

本文介绍了一种通过运营商SDK实现的一键登录功能,该功能允许应用程序在用户同意的情况下直接获取其手机号码,从而简化登录流程。文章详细描述了授权流程,包括SDK初始化、唤起授权页、同意授权并登录以及取号等步骤。此外,还提到了在未插入SIM卡或移动网络关闭时的兼容性解决方案,以及如何接入整合了三大运营商认证能力的第三方SDK。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上常见的方案是使用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)

网易(https://dun.163.com/product/phone-verification)

百度(https://cloud.baidu.com/doc/PNVS/index.html)

创蓝闪验(http://shanyan.253.com/document)

mob秒验(https://www.mob.com/wiki/list)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值