Базовая структура телефонии частично публичная в 4.0 - PullRequest
2 голосов
/ 05 сентября 2010

Поскольку я не хочу делать джейлбрейк моего iPhone, я разрабатываю персональное приложение, которому требуется доступ к платформе Core Telephony.

В 4.x платформа Core Telephony стала частично публичной, но большая часть еефьючерсы все еще скрыты и остаются закрытыми.

Я только что скачал файлы заголовков в формате seriot.ch

Я нашел список всех известных функций CoreTelephony но я не могу заставить свой код делать то, что должен делать.Некоторые предложения?

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {        
// Override point for customization after application launch.
[window makeKeyAndVisible]; 
CTCallCenter *callCenter = [[CTCallCenter alloc] init];    
callCenter.callEventHandler = ^(CTCall* call){
   if (call.callState == CTCallStateIncoming) {         
      CTCallDisconnect(call);
   }
};  
return YES;

}

1 Ответ

3 голосов
/ 25 июля 2012

Вы не можете использовать общедоступный обработчик событий вызова CoreTelephony с частными функциями CoreTelephony, такими как CTCallDisconnect.Вы можете увидеть рабочий пример необходимого кода обработчика приватных событий здесь: http://tech.ruimaninfo.com/?p=83 - они бита ключа:

// Register our event handler
id ct = CTTelephonyCenterGetDefault();
CTTelephonyCenterAddObserver(ct, NULL, callback, NULL, NULL, CFNotificationSuspensionBehaviorHold);

// Our callback
static void callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
    NSString *notifyname=(NSString *)name;
    if ([notifyname isEqualToString:@"kCTCallIdentificationChangeNotification"])
    {
        NSDictionary *info = (NSDictionary *)userInfo;
        CTCall *call = (CTCall *)[info objectForKey:@"kCTCall"];
        NSString *caller = CTCallCopyAddress(NULL, call);
        NSLog(@"Incoming call: %@",caller);
        CTCallDisconnect(call);
    }
 }

Я подтвердил, что это работает на iOS5.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...