Как обращаться с serviceSubscriberCellularProviders, чтобы получать только данные с физической SIM-карты вместо eSIM?
Итак, у меня есть приложение, которое требует считывания данных с SIM-карты. Точнее, мне нужно имя оператора, MCC, MNC, код страны ISO и текущая технология радиодоступа (хорошо, это не происходит напрямую с SIM-карты, но связано). Он отлично работает на каждом телефоне, но я понял (после тестирования), что у меня проблемы с новейшими iPhone, на которых настроен eSIM. Я понятия не имею, как настроить приложение для чтения данных с физической 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-карта]: имя оператора: бесплатно, MCC: 208, MNC: 15, код страны ISO: fr, CTRadioAccessTechnology: WCDMA.
Но вместо этого я получаю [eSIM]: имя перевозчика: Swisscom, MCC: 228, MNC: 01, код страны ISO: ch, CTRadioAccessTechnology: LTE.
РЕДАКТИРОВАТЬ: Если вы знаете, как я могу читать оба, это также хорошо для меня, моя цель состоит в том, чтобы определить, использует ли пользователь SIM-карту Free Mobile [208 15].
1 ответ
let carriers = telephonyInfo.serviceSubscriberCellularProviders?.values
приведет к опциональному массиву. Пройдите и проверьте, является ли он «бесплатным»
До сих пор не знаю, как обнаружить eSim или физическое