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