You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在iPhone中获取当前SIM号码?解析Lyft自动提示手机号的原理

在iPhone中获取当前SIM号码的限制

嘿,首先得明确:iOS的公开API完全无法直接获取SIM卡的电话号码。不管你用Swift还是Objective-C,像CTTelephonyNetworkInfo(能拿到运营商名称、国家代码)或者CNContactStore这些系统框架,都没有提供获取用户SIM号码的公开接口。

苹果这么做核心是出于隐私保护——用户的电话号码属于敏感个人信息,第三方应用无权随意获取,哪怕是读取SIM卡上的号码也不行。

Lyft自动提示电话号码的可能实现方式

既然公开API走不通,Lyft的操作其实是靠这些“曲线救国”的方法:

  • 读取通讯录的「我的名片」:大部分用户会在自己的通讯录里保存个人号码,Lyft会请求通讯录权限,然后读取系统标记为「Me Contact」的条目,从中提取电话号码,再提示用户“这是你的号码吗?”——这是第三方应用最常用的方式。
  • 关联第三方登录账号:如果用户用Facebook、Google或者苹果ID登录Lyft,这些账号大概率绑定了电话号码,Lyft可以在用户授权后,通过第三方登录的接口获取到对应的号码信息。
  • 复用历史登录数据:如果用户之前在这个设备上登录过Lyft,应用会在本地(比如Keychain)或者服务器端保存用户的号码记录,下次打开时直接调出预填充。
  • 短信验证码预关联:当用户进入验证流程时,Lyft可能会请求短信读取权限,一旦收到运营商发来的验证码短信,自动提取发送目标号码(也就是你的手机号),不过这种方式需要用户授权短信权限,现在iOS对这类权限的管控也越来越严。

内容的提问来源于stack exchange,提问作者Moti Hula

火山引擎 最新活动