Получение имени оператора с помощью CoreTelephony возвращает просто «Перевозчик» - PullRequest
10 голосов
/ 19 мая 2011

Я попытался получить имя оператора с помощью этого кода (используя CoreTelephony):

CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netinfo subscriberCellularProvider];
NSLog(@"Carrier Name: %@", [carrier carrierName]);

Возвращает «Перевозчик». Если я зайду в настройки iPhone, то имя моего оператора там будет правильным. Моя iOS на телефоне v4.2.1.

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Вы действительно получаете строку "Carrier" или строка пуста ?Документация гласит:

Значение этого свойства равно нулю, если применимо любое из следующего:

Устройство находится в режиме полета.В устройстве нет SIM-карты.Устройство находится вне зоны действия сотовой связи.

Ставьте, что оно также пусто в симуляторе.

В любом случае, вы должны проверить mobileNetworkCode , так как имена редко бывают правильными(по крайней мере, в Европе, где операторы приходят и уходят, часто меняя имена).

0 голосов
/ 17 мая 2014

при этом вы можете получить код мобильной сети, код страны мобильной связи. из этих значений Вы можете указать, какое имя этого сима.

CTTelephonyNetworkInfo* info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier* carrier = info.subscriberCellularProvider;
NSString *mobileCountryCode = carrier.mobileCountryCode;
NSString *carrierName = carrier.carrierName;
NSString *isoCountryCode = carrier.isoCountryCode;
NSString *mobileNetworkCode = carrier.mobileNetworkCode;

, и вы можете сделать для этого веб-сервис, чтобы указать, к какому имени оператора сети принадлежит этот параметр. эти параметры могут быть однозначно определены из этой википедии .

например, мой код страны "410", моя операторская сеть "06", и он правильно идентифицирует мое имя оператора.

Я тоже застрял в той же проблеме и теперь решил

...