iOS 7 alternative to CTCall?

2019-03-09 10:11发布

In our enterprise iOS app we used

CTCallRef CTCallDial(CFStringRef number);

to do calls from the app (and be able to hide the caller-id

It does not seem to work in iOS 7. Has the API changed there?

(I'm fully aware that this is a private API call and that it can change anytime, but I'm still hoping to find an alternative. Sadly I'm not savvy enough to know how to find all private API that is available)

4条回答
ゆ 、 Hurt°
2楼-- · 2019-03-09 10:25

I think it requires you to sign your app with com.apple.coretelephony.Calls.allow entitlement. I found it in SpringBoard binary. Apple added a whole bunch of new entitlements. So we should expect that many APIs will not work without them. Just for CoreTelephony alone there is four entitlements in SpringBoard.

查看更多
三岁会撩人
3楼-- · 2019-03-09 10:30

Actually I've tried the same as vualoaithu and got no luck. But I've also tried to use other methods of TUCallCenter object and looks like it works fine. For example following method works:

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
    }
}

Also I've tried following:

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

But I got exception:

[TUPhoneNumber length]: unrecognized selector sent to instance 0x14dcefd0

Looks Like we are on the way. If someone will find solution. Please post it here. Thanks.

查看更多
萌系小妹纸
4楼-- · 2019-03-09 10:38

you can use

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

But you can't close call screen when call finished

查看更多
看我几分像从前
5楼-- · 2019-03-09 10:41

I asked the same question here in stackoverflow 2 hours after your post... A first look at the class dump (https://github.com/EthanArbuckle/IOS-7-Headers/blob/master/Frameworks/CoreTelephony.framework/CTCall.h) shows, that this function is missing...

查看更多
登录 后发表回答