【发布时间】:2015-04-11 19:46:02
【问题描述】:
我正在尝试创建一个 ios 应用程序,并且我想根据用户使用的数据提供商(例如 Verizon 和 AT&T)对用户进行细分。是否可以通过 ios 应用程序以编程方式获取此信息。
【问题讨论】:
标签: ios objective-c iphone swift
我正在尝试创建一个 ios 应用程序,并且我想根据用户使用的数据提供商(例如 Verizon 和 AT&T)对用户进行细分。是否可以通过 ios 应用程序以编程方式获取此信息。
【问题讨论】:
标签: ios objective-c iphone swift
你应该检查CTCarrier。
只需将CoreTelephony 导入您的 Swift 文件即可。
然后您可以使用carrierName 属性来获取您的运营商的名称。
// Setup the Network Info and create a CTCarrier object
let networkInfo = CTTelephonyNetworkInfo()
let carrier = networkInfo.subscriberCellularProvider
// Get carrier name
let carrierName = carrier.carrierName
【讨论】:
let carrier = networkInfo.serviceSubscriberCellularProviders?.first?.value
您将希望在 CoreTelephony 框架中使用 CTCarrier carrierName:https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternet/Reference/CTCarrier/index.html#//apple_ref/occ/instp/CTCarrier/carrierName
【讨论】:
现在您可以拥有多个 SIM 卡,subscriberCellularProvider 已被弃用,取而代之的是 serviceSubscriberCellularProviders。您可以通过以下方式获取提供程序的数组:
CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?.values
在我的例子中,我正在检查用户是否有美国电话号码,以便他们可以发送短信而不是电子邮件。你可以这样做:
carriers.contains { $0.isoCountryCode?.lowercased() == "us" }
在我的手机上,我只有一张 SIM 卡,但是这个数组返回两个值,其中一个具有所有 nil 属性,所以如果您正在检查它们,请务必处理。
【讨论】: