auditya
auditya

Reputation: 409

How can I get details about the device data provider (like Verizon/AT&T) of an iphone programmatically?

I am trying to create an ios application and I want to segment the users based on the data providers they are using, such as Verizon and AT&T. Is it possible to get this information programmatically from the ios application.

Upvotes: 22

Views: 21584

Answers (3)

Sam Soffes
Sam Soffes

Reputation: 14935

Now that you can have multiple SIM cards, subscriberCellularProvider is deprecated in favor of serviceSubscriberCellularProviders. You can get an array of the providers with this:

let carriers = CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?.values

In my case, I was checking to see if the user has an American phone number so they can text support instead of email. You can do that with this:

carriers.contains { $0.isoCountryCode?.lowercased() == "us" }

On my phone, I only have one SIM card, but this array returns two values and one has all nil properties so be sure to handle that if you are inspecting them.

Upvotes: 5

Christian
Christian

Reputation: 22343

You should check the CTCarrier.

Just import CoreTelephony into your Swift file.

Then you can use the carrierName property to get the name of your carrier.

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

// Get carrier name
let carrierName = carrier.carrierName

Upvotes: 54

Related Questions