swift - 如何处理 serviceSubscriberCellularProviders 以仅从物理 SIM 卡而不是 eSIM 获取数据?

标签 swift core-telephony

好的,所以我有一个应用程序需要从 SIM 卡读取数据。更准确地说,我需要运营商名称、MCC、MNC、ISO 国家代码和当前的 radio 接入技术(好吧,这不是直接来自 SIM 卡,但它是链接的)。它在每部手机上都能完美运行,但我意识到(在测试后)我在使用设置了 eSIM 的最新 iPhone 时遇到了麻烦。我不知道如何让我的应用程序读取物理 SIM 卡而不是 eSIM 卡的数据。

我试着在网上搜索了一下,但我一无所获......

let telephonyInfo: CTTelephonyNetworkInfo = CTTelephonyNetworkInfo()

carrierNetwork = telephonyInfo.serviceCurrentRadioAccessTechnology?.first?.value ?? "null"
carrierNetwork = carrierNetwork.replacingOccurrences(of: "CTRadioAccessTechnology", with: "", options: NSString.CompareOptions.literal, range: nil)

let carrier = telephonyInfo.serviceSubscriberCellularProviders?.first?.value // actually here originally I tried to use ?.values.first, but the result is the same

let countryCode = carrier?.mobileCountryCode ?? "null"
let mobileNetworkName = carrier?.mobileNetworkCode ?? "null"
let carrierName = carrier?.carrierName ?? "null"
let isoCountrycode = carrier?.isoCountryCode?.uppercased() ?? "null"

/* so the problem is that the values I get are the ones from the eSIM when it is set up. If it is not, then I get the values I want. Apparently, when the physical SIM card line is set as primary, it works. But I need that code to systematically use the physical SIM data. */

示例:

我希望[物理 SIM 卡]: 运营商名称:免费, 中冶:208, 跨国公司:15, ISO 国家代码:fr, CTRadioAccess技术:WCDMA。

但是,我得到的是 [eSIM]: 运营商名称:Swisscom, 中冶:228, 跨国公司:01, ISO 国家代码:ch, CTRadioAccess 技术:LTE。

编辑:如果您知道我如何读取两者,那对我来说也很好,我的目标是检测用户是否使用免费移动 [208 15] SIM 卡。

最佳答案

let carriers = telephonyInfo.serviceSubscriberCellularProviders?.values

将生成可选数组。浏览并检查它是否“免费”

仍然不知道如何检测 eSim 或物理

关于swift - 如何处理 serviceSubscriberCellularProviders 以仅从物理 SIM 卡而不是 eSIM 获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54601863/

相关文章:

iOS - _OBJC_CLASS_$_CTTelephonyNetworkInfo 未找到?

ios - 当我的应用程序进入后台时,我可以在 dispatch_async 中加入一个循环吗?

ios - 我怎样才能重绘 UIView 的形状并同时给它一个阴影?

ios - 从 objective-c 调用 swift 代码时,第一次推送 View Controller 花费了太多时间

iPhone - 跟踪蜂窝数据使用情况

ios - CTCarrier 在所有属性上返回 nil

ios - 是否可以确定 SIM/电话号码是否已更改?

ios - 如何快速以编程方式调用 UIView 上的手势点击

ios - 在 Swift 中使用视觉格式通过约束格式化 TextView

swift - JSON 到模型扩展