Программное получение уровня несущего сигнала iPhone

Есть ли способ узнать носитель iPhone и / или текущий уровень сигнала с помощью Objective-C? Я знаю, как определить, присутствует ли соединение для передачи данных, и является ли это соединение Wi-Fi или сотовым. Я также знаю, что вы можете вручную перевести iPhone в режим «полевых испытаний», зайдя в приложение телефона, набрав # 3001 * 12345 * # и нажав «Отправить».


person Dan Bourque    schedule 13.08.2009    source источник
comment
Вы когда-нибудь находили ответ на этот вопрос?   -  person Hauke    schedule 09.06.2010


Ответы (2)


Вы меня заинтересовали, и я узнал, что это действительно *3001#12345#* (обмен хешами и звездочками).

person Hauke    schedule 17.08.2009

Вероятно, это не пройдет проверку Apple, но вы можете использовать уведомления CTTelephony. Во-первых, ссылка на CTTelephony. Теперь просто используйте это:

static void callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {

    CFShow(name)

    NSString *sName = name;
    if ([sName isEqualToString:@"kCTIndicatorsSignalStrengthNotification"]) {
        if (userInfo) CFShow(userInfo);
    }    
}

А это для подписки:

id ct = CTTelephonyCenterGetDefault(); 

    CTTelephonyCenterAddObserver(
                                 ct, 
                                 NULL, 
                                 callback,
                                 NULL,
                                 NULL,
                                NULL);
person fbernardo    schedule 06.02.2012
comment
Почему не проходит проверку? - person Valerii Pavlov; 23.02.2012
comment
Несмотря на то, что CoreTelephony является общедоступным API, начиная с iOS 4.0, CTTelephonyCenterGetDefault () и CTTelephonyCenterAddObserver () являются частными методами. Он может пройти проверку в зависимости от рецензента, но этого не должно быть. - person fbernardo; 23.02.2012
comment
Я просто попробовал это, и он дал мне сообщения о событиях пользовательского интерфейса (например, UIViewAnimationDidStopNotification), но ничего похожего на телефонию. Есть идеи, что может быть не так? - person brianestey; 09.03.2012
comment
Какую версию iOS вы используете? Вы связали свой проект с CT? - person fbernardo; 09.03.2012
comment
Собственно, не обращайте внимания на мой последний комментарий. Я просто не ждал достаточно долго - уровень сигнала приходит не так часто, как я ожидал. - person brianestey; 09.03.2012