You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 16中CTCarrier已弃用,如何获取MCC/MNC等运营商信息?

iOS 16 后获取运营商信息(MCC/MNC/ISO代码)的替代方案

官方推荐的替代API

iOS 16 弃用CTCarrier后,苹果推荐使用CoreTelephony框架下的CTTelephonyNetworkInfo结合CTServiceSubscriberCellularProvider来获取所需的运营商信息,包括MCC、MNC和ISO国家代码。

具体实现代码示例如下:

import CoreTelephony

let networkInfo = CTTelephonyNetworkInfo()
// 获取所有蜂窝服务的运营商信息(适配多SIM卡设备)
if let cellularProviders = networkInfo.serviceSubscriberCellularProviders {
    for (serviceIdentifier, provider) in cellularProviders {
        // 读取MCC(移动国家代码)
        if let mcc = provider.mobileCountryCode {
            // 业务逻辑处理
        }
        // 读取MNC(移动网络代码)
        if let mnc = provider.mobileNetworkCode {
            // 业务逻辑处理
        }
        // 读取ISO国家代码
        if let isoCode = provider.isoCountryCode {
            // 业务逻辑处理
        }
    }
}

关键注意事项

  • 必须在Info.plist中添加com.apple.developer.coretelephony.subscribercellularprovider权限,并在App审核时明确说明使用场景(如诈骗检测、地区/运营商登录限制),否则无法获取到数据。
  • 如果设备支持多SIM卡,serviceSubscriberCellularProviders会返回多个运营商实例,需要根据业务需求选择对应的服务(比如主卡)。

关于弃用原因的推测

苹果并未在WWDC视频中专门解释CTCarrier的弃用原因,但结合近年隐私保护的趋势来看,核心原因应该是强化用户隐私管控——旧API的信息获取门槛较低,容易被过度收集;新API则通过权限限制,确保只有具备合理业务需求的App才能获取这类敏感信息。

业务场景适配建议

针对你提到的诈骗检测、地区/运营商登录限制场景,给出几点适配建议:

  • 权限申请时,务必向用户清晰说明获取运营商信息的具体用途,符合苹果隐私合规要求。
  • 做好异常处理:如果用户拒绝权限、设备无蜂窝网络或无法获取信息,需要准备 fallback 方案,比如通过手机号归属地辅助判断,或引导用户手动选择地区/运营商。
  • 测试多SIM卡设备的业务逻辑,避免因多个运营商信息导致判断错误。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:48:38