8

在我们使用的企业 iOS 应用程序中

CTCallRef CTCallDial(CFStringRef number);

从应用程序拨打电话(并能够隐藏来电显示

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

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

4

4 回答 4

3

我认为这需要您使用com.apple.coretelephony.Calls.allow权利签署您的应用程序。我在 SpringBoard 二进制文件中找到了它。苹果增加了一大堆新的权利。所以我们应该预料到,如果没有它们,许多 API 将无法工作。仅 CoreTelephony 就在 SpringBoard 中有四个权利。

于 2013-10-09T07:19:10.320 回答
2

在您发布帖子 2 小时后,我在 stackoverflow 中问了同样的问题......首先看一下类转储(https://github.com/EthanArbuckle/IOS-7-Headers/blob/master/Frameworks/CoreTelephony.framework/ CTCall.h ) 显示,缺少此功能...

于 2013-09-24T06:51:26.503 回答
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 长度]:无法识别的选择器发送到实例 0x14dcefd0

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

于 2013-10-02T01:40:34.797 回答
-1

您可以使用

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

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

于 2013-09-26T06:54:52.963 回答