如何以编程方式获取有关iphone的设备数据提供程序(如Verizon/AT&T)的详细信息?

aud*_*tya 13 iphone objective-c ios swift

我正在尝试创建一个ios应用程序,我想根据他们使用的数据提供程序对用户进行细分,例如Verizon和AT&T.是否可以从ios应用程序以编程方式获取此信息.提前致谢.

Chr*_*örz 38

你应该检查一下CTCarrier.

只需导入CoreTelephonySwift文件即可.

然后,您可以使用该carrierName属性获取您的运营商的名称.

// Setup the Network Info and create a CTCarrier object
let networkInfo = CTTelephonyNetworkInfo()
let carrier = networkInfo.subscriberCellularProvider

// Get carrier name
let carrierName = carrier.carrierName
Run Code Online (Sandbox Code Playgroud)

  • 对于iOS 12,由于能够在某些设备中使用多个SIM卡,苹果已弃用了'subscriberCellularProvider',并将其替换为一系列CellularProviders'serviceSubscriberCellularProviders'。如果与CTCarrier无关,只需使用:`let carrier = networkInfo.serviceSubscriberCellularProviders?.first?.value`。 (5认同)

Sam*_*fes 5

现在您可以拥有多个 SIM 卡,subscriberCellularProvider已弃用,取而代之的是serviceSubscriberCellularProviders. 您可以通过以下方式获取提供者数组:

let carriers = CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?.values
Run Code Online (Sandbox Code Playgroud)

就我而言,我正在检查用户是否有美国电话号码,以便他们可以短信支持而不是电子邮件。你可以这样做:

carriers.contains { $0.isoCountryCode?.lowercased() == "us" }
Run Code Online (Sandbox Code Playgroud)

在我的手机上,我只有一张 SIM 卡,但该数组返回两个值,其中一个值的属性全部为 nil,因此在检查它们时请务必处理好这一问题。