在我们企业的iOS应用程序,我们使用iOS 7替代CTCall?
CTCallRef CTCallDial(CFStringRef number);
做从应用程序调用(并且能够隐藏主叫方ID
这似乎并不在iOS的7工作改变了API在那里?
(我深知,这是一个私人的API调用,它可以随时改变,但我仍然希望能找到一种替代方法。不幸的是我没有足够精明,知道如何找到所有私人API是可用的)
在我们企业的iOS应用程序,我们使用iOS 7替代CTCall?
CTCallRef CTCallDial(CFStringRef number);
做从应用程序调用(并且能够隐藏主叫方ID
这似乎并不在iOS的7工作改变了API在那里?
(我深知,这是一个私人的API调用,它可以随时改变,但我仍然希望能找到一种替代方法。不幸的是我没有足够精明,知道如何找到所有私人API是可用的)
我问了这里计算器同样的问题,你的帖子后2小时...... 初识类转储(https://github.com/EthanArbuckle/IOS-7-Headers/blob/master/Frameworks/CoreTelephony.framework/CTCall.h)所示,这个函数是缺少...
在TUCallCenter的头文件(https://github.com/EthanArbuckle/IOS-7-Headers/blob/master/PrivateFrameworks/TelephonyUtilities.framework/TUCallCenter.h)中,有一个名为“ - (id)dial: (id)arg1服务:(int)arg2“但我不能得到TUCallcenter的实例,因为sharedInstance返回null。 – ErdyMurphy
我犯了一个错误... sharedInstance doest return nil ... – ErdyMurphy
但是当我打电话[TUCallCenter sharedInstance]拨号:@“123”service:0];我得到了和调用CTCallDial()一样的行为() – ErdyMurphy
可以使用
[UIApplication的sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@“tel:%@”,num]]];
但是你可以在通话结束后
中的方法,正如@ErdyMurphy在其他答案中提到的,此方法不允许将控制序列发送到电话应用程序。你需要隐藏caller-id。 – clows
不千钧一发屏幕其实我已经试过一样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
看起来就像我们在路上。如果有人会找到解决办法。请在这里发布。 谢谢。
我认为它需要你用com.apple.coretelephony.Calls.allow
权利签署你的应用程序。我在SpringBoard二进制文件中找到它。苹果增加了一大堆新的权利。所以我们应该期待没有它们的许多API都无法正常工作。仅针对CoreTelephony,SpringBoard中有四项权利。
我可以确认'com.apple.coretelephony.Calls.allow'是解决方案。如果没有此权利,您无法使用“CTCallDial”拨打电话。 – creker
我被用于SpringBoardServices,SpringBoardFoundation,SpringBoardUI,SpringBoardUIServices的类转储。**但没有看到com.apple.coretelephony.Calls.allow **它在哪里?帮我 – vualoaithu
我在说'SpringBoard.app/SpringBoard'二进制文件。你可以在你的设备上的'/ System/Library/CoreServices/SpringBoard.app/SpringBoard'或iOS模拟器找到它'Xcode.app/Content/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0。 sdk/System/Library/CoreServices/SpringBoard.app/SpringBoard'。用任何文本编辑器打开二进制文件并滚动到结尾。你会发现许多权利,其中将'com.apple.coretelephony.Calls.allow' – creker
下载'class-dump'或'class-dump-z'来检查私有Obj-C API。 – Nate