Flutter开发中如何获取用户手机号码 支持安卓iOS的相关包有哪些
Flutter 跨端获取用户手机号码实现方案
前置说明
由于系统隐私权限限制,安卓、iOS均未对第三方App开放直接读取SIM卡中手机号码的公开API,你不可能仅通过系统权限申请就全量获取所有用户的手机号,这是底层系统的限制,和Flutter框架本身无关。
关于sim_info、sim_data包的说明
你的认知是正确的,这两个包仅支持读取SIM卡的运营商名称、国家码、SIM卡状态、ICCID等基础标识信息,没有提供手机号码读取能力,这类SIM信息读取类的第三方包基本都不支持手机号获取。
可行的跨端实现方案
目前仅以下两种合规方案可同时支持安卓、iOS系统获取用户手机号:
- 运营商一键登录校验:这是当前行业主流的实现方式,依赖三大运营商的网关校验能力,无需用户手动输入手机号、无需申请读取SIM相关的系统权限,仅需调用对应服务商的SDK即可直接获取当前设备SIM卡绑定的手机号,准确率可达99%以上,支持双SIM卡设备选择对应号码。
- 手机号短信验证:用户手动输入手机号后,向该号码发送验证码,校验通过后即可确认用户持有该手机号,这种方案无需依赖第三方服务商的一键登录服务,适配全场景,但用户操作路径更长。
推荐Flutter依赖包
- 国内业务场景可使用
flutter_onekey_login,封装了国内三大运营商的一键登录能力,同时适配安卓、iOS系统,提前在对应运营商服务平台开通权限后即可接入使用。 - 海外业务场景可使用
firebase_auth的手机号验证模块,同时支持静默校验、短信验证码校验两种模式,适配全球大部分国家和地区的手机号验证需求。
注意:所有获取用户手机号的操作都需要提前向用户明确告知用途,获取用户的主动授权,避免违反隐私合规相关法规。
内容的提问来源于stack exchange,提问作者wahyu
相关产品推荐
相关产品推荐

