gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:25:59 25 4
gpt4 key购买 nike

好的,所以我有一个应用程序需要从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com