2010-09-05 3 views
2

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

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

Я Joust скачал файлы заголовков образуют seriot.ch

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

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

- (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; 

}

+0

ли вы когда-нибудь понять это? –

ответ

3

Вы не можете использовать общественный 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

+0

, работающий на iOS6.0 и iOS6.1 –

+0

Это не вызывается, когда звонок подключен или отключен – Heena

Смежные вопросы