核心电话 CTCarrier 和 isoCountryCode。如何获取用户当前的手机运营商所在国家/地区?
Core telephony CTCarrier and isoCountryCode. How to get user's current cellular provider's country?
我想在不询问位置的情况下获取用户当前所在的国家/地区。所以我想用CTCarrier
class属性isoCountryCode
。要访问 CTCarrier
,我正在使用 serviceSubscriberCellularProviders
,其中 returns “包含有关每项服务的运营商信息的字典”。
https://developer.apple.com/documentation/coretelephony/cttelephonynetworkinfo/3024511-servicesubscribercellularprovide.
现在,当我查询 serviceSubscriberCellularProviders
时,它 return 有 2 个对象 - nil
并且大概是我的家庭蜂窝服务提供商。
let networkInfo = CTTelephonyNetworkInfo()
let dictionary = networkInfo.serviceSubscriberCellularProviders;
for (type, value) in dictionary ?? [:] {
let country:String? = value.isoCountryCode == nil ? "nil" : value.isoCountryCode;
print("serviceSubscriberCellularProviders: "+country!)
}
如果我在国外并连接到漫游服务提供商,我是否仍会得到两个对象 - 家和现在而不是 nil
- 漫游服务提供商?在漫游服务提供商内部 属性 isoCountryCode
会 return 漫游服务提供商的实际国家吗?
文档让我感到困惑... isoCountryCode
对于家庭移动服务提供商来说究竟是什么?假设我住在法国,我的服务提供商当然来自法国 - isoCountryCode
会 return "FR"。现在,如果我去德国度假 - isoCountryCode
现在 return 会怎么样?还是一样 "FR" 还是 "DE"?
如文档所述:
Note
In this context, the “home” provider is the one with which the user has a cellular plan, as opposed to a roaming provider.
因此,如果您的家庭提供商在法国,您将始终获得 FR,即使在漫游时也是如此。
之所以有两个可能的值,是因为 iPhone 现在最多支持两个 SIM 卡;一个实体的和一个 e-SIM,因此 phone 上可能有两个不同的蜂窝提供商。
我想在不询问位置的情况下获取用户当前所在的国家/地区。所以我想用CTCarrier
class属性isoCountryCode
。要访问 CTCarrier
,我正在使用 serviceSubscriberCellularProviders
,其中 returns “包含有关每项服务的运营商信息的字典”。
https://developer.apple.com/documentation/coretelephony/cttelephonynetworkinfo/3024511-servicesubscribercellularprovide.
现在,当我查询 serviceSubscriberCellularProviders
时,它 return 有 2 个对象 - nil
并且大概是我的家庭蜂窝服务提供商。
let networkInfo = CTTelephonyNetworkInfo()
let dictionary = networkInfo.serviceSubscriberCellularProviders;
for (type, value) in dictionary ?? [:] {
let country:String? = value.isoCountryCode == nil ? "nil" : value.isoCountryCode;
print("serviceSubscriberCellularProviders: "+country!)
}
如果我在国外并连接到漫游服务提供商,我是否仍会得到两个对象 - 家和现在而不是 nil
- 漫游服务提供商?在漫游服务提供商内部 属性 isoCountryCode
会 return 漫游服务提供商的实际国家吗?
文档让我感到困惑... isoCountryCode
对于家庭移动服务提供商来说究竟是什么?假设我住在法国,我的服务提供商当然来自法国 - isoCountryCode
会 return "FR"。现在,如果我去德国度假 - isoCountryCode
现在 return 会怎么样?还是一样 "FR" 还是 "DE"?
如文档所述:
Note
In this context, the “home” provider is the one with which the user has a cellular plan, as opposed to a roaming provider.
因此,如果您的家庭提供商在法国,您将始终获得 FR,即使在漫游时也是如此。
之所以有两个可能的值,是因为 iPhone 现在最多支持两个 SIM 卡;一个实体的和一个 e-SIM,因此 phone 上可能有两个不同的蜂窝提供商。