在我们使用的企业 iOS 应用程序中
CTCallRef CTCallDial(CFStringRef number);
从应用程序拨打电话(并能够隐藏来电显示
它似乎在 iOS 7 中不起作用。那里的 API 有变化吗?
(我完全知道这是一个私有 API 调用,它可以随时更改,但我仍然希望找到替代方案。遗憾的是,我不够精明,不知道如何找到所有可用的私有 API)
在我们使用的企业 iOS 应用程序中
CTCallRef CTCallDial(CFStringRef number);
从应用程序拨打电话(并能够隐藏来电显示
它似乎在 iOS 7 中不起作用。那里的 API 有变化吗?
(我完全知道这是一个私有 API 调用,它可以随时更改,但我仍然希望找到替代方案。遗憾的是,我不够精明,不知道如何找到所有可用的私有 API)
我认为这需要您使用com.apple.coretelephony.Calls.allow
权利签署您的应用程序。我在 SpringBoard 二进制文件中找到了它。苹果增加了一大堆新的权利。所以我们应该预料到,如果没有它们,许多 API 将无法工作。仅 CoreTelephony 就在 SpringBoard 中有四个权利。
在您发布帖子 2 小时后,我在 stackoverflow 中问了同样的问题......首先看一下类转储(https://github.com/EthanArbuckle/IOS-7-Headers/blob/master/Frameworks/CoreTelephony.framework/ CTCall.h ) 显示,缺少此功能...
实际上,我已经尝试过与 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
看起来我们正在路上。如果有人会找到解决方案。请张贴在这里。谢谢。
您可以使用
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",num]]];
但是通话结束后无法关闭通话屏幕