iOS 7替代CTCall?

时间:2013-09-23 08:49:55

标签: iphone ios ios7 iphone-privateapi

在我们的企业iOS应用中,我们使用了

CTCallRef CTCallDial(CFStringRef number);

从应用程序执行调用(并且能够隐藏调用者ID

它在iOS 7中似乎不起作用。那里的API有变化吗?

(我完全清楚这是一个私人API调用,它可以随时更改,但我仍然希望找到替代方案。遗憾的是,我不够精明,不知道如何找到所有可用的私有API)

4 个答案:

答案 0 :(得分:3)

我认为它需要您使用com.apple.coretelephony.Calls.allow权利签署您的应用。我在SpringBoard二进制文件中找到了它。 Apple增加了一大堆新的权利。因此,我们应该期望许多API在没有它们的情况下无法工作。仅针对CoreTelephony,SpringBoard中有四种权利。

答案 1 :(得分:2)

我在你帖子发布2小时后在stackoverflow中问了同样的问题... 首先看一下类转储(https://github.com/EthanArbuckle/IOS-7-Headers/blob/master/Frameworks/CoreTelephony.framework/CTCall.h),表明这个函数丢失了......

答案 2 :(得分:0)

其实我尝试过和vualoaithu一样,没有运气。但我也尝试使用TUCallCenter对象的其他方法,看起来它工作正常。例如,以下方法有效:

TUCallCenter *callCenter = [TUCallCenter sharedInstance];
if(callCenter) {
    NSLog(@"callCenter is created!");
    //Working part
    if([callCenter inCall]){
        NSLog(@"IN CALL"); // when you press answer button and can talk
    }else{
        NSLog(@"NOT IN CALL"); // other cases
    }
}

我也尝试过:

    TUPhoneNumber* phoneNumber =
    [TUPhoneNumber phoneNumberWithDigits:@"55555555"
                             countryCode:@"1"];
if(phoneNumber) {
    NSLog(@"Phone Number obj = %@",phoneNumber);
    NSLog(@"Phone Number = %@",phoneNumber.digits);
    NSLog(@"Country Code = %@",phoneNumber.countryCode);
}
[callCenter dial:phoneNumber service:0];

但我有例外:

[TUPhoneNumber length]:无法识别的选择器发送到实例0x14dcefd0

看起来我们正在路上。如果有人会找到解决方案。请在这里发布。 感谢。

答案 3 :(得分:-1)

你可以使用

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@“tel:%@”,num]]];

但是,在通话结束后你无法关闭通话屏幕