[英]Is it possible with CallKit Framework to make, answer and end telephonic call or is it used for VOIP call only?
我想在CallKit的帮助下对电话进行操作,但是根据Apple文档,它只能用于进行VOIP通话,是否可以通过任何方式进行拨出电话,结束当前通话并接听来电CallKit的帮助下进行电话通话。
我正在使用私有框架(TelephonyUtilities),尝试进行上述活动。
NSBundle *bundlePath = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/TelephonyUtilities.framework"];
if ([bundlePath load]) {
Class TUCallCenter = NSClassFromString(@"TUCallCenter");
id tuCallCenter = [TUCallCenter sharedInstance];
}
但是,没有TUCallCenter方法允许我从应用程序发起电话呼叫。 尽管有定义的方法可用。 其中一些是:
- (id)_dial:(id)arg1 callID:(int)arg2 service:(int)arg3 sourceIdentifier:(id)arg4 dialType:(int)arg5 uniqueProxyIdentifier:(id)arg6;
- (id)_dialWithRequest:(id)arg1 completion:(id /* block */)arg2;
- (id)callWithCallUUID:(id)arg1;
- (id)callWithStatus:(int)arg1;
- (id)callWithUniqueProxyIdentifier:(id)arg1;
- (id)callsWithStatus:(int)arg1;
- (id)dial:(id)arg1 callID:(int)arg2 service:(int)arg3;
- (id)dial:(id)arg1 callID:(int)arg2 service:(int)arg3 sourceIdentifier:(id)arg4 uniqueProxyIdentifier:(id)arg5;
- (id)dial:(id)arg1 service:(int)arg2;
- (id)dialEmergency:(id)arg1;
- (id)dialEmergency:(id)arg1 sourceIdentifier:(id)arg2;
- (id)dialWithRequest:(id)arg1;
- (void)dialWithRequest:(id)arg1 completion:(id /* block */)arg2;
CallKit
显示应用程序的VoIP服务的系统调用UI,并与其他应用程序和系统协调您的呼叫服务。
概观
通过CallKit,您可以将呼叫服务与系统上其他与呼叫相关的应用程序集成在一起。 CallKit提供了呼叫接口,您可以使用VoIP服务处理后端通信。 对于传入和传出呼叫,CallKit显示与“电话”应用程序相同的界面,从而使您的应用程序具有更原始的外观。 而且,CallKit可以对系统级别的行为做出适当的响应,例如“请勿打扰”。
除了处理呼叫,您还可以提供“呼叫目录”应用程序扩展,以提供呼叫者ID信息以及与您的服务关联的阻止号码的列表。
接听来电
直接接收来电方法会导致在VOIP应用程序中使用的PushKit静默通知。
// MARK: PKPushRegistryDelegate
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, forType type: PKPushType) {
// report new incoming call
}
因此,除了VOIP应用之外,没有机会使用CallKit。
https://developer.apple.com/documentation/callkit
希望这有助于理解情况。
恐怕并非没有越狱( 编辑 :或者对于私有发布的应用,没有使用私有框架)。
CallKit旨在使您的VoIP呼叫出现在“电话”应用中,就像这里的这些一样。 CallKit还可以使您的VoIP应用程序呼叫看起来像对用户的普通语音呼叫。
您要查找的内容需要一个私有框架,但是在那种情况下,您要么编码为越狱版本,要么为客户编码私有版本。 为此,您可能需要研究TelephonyUtilities.framework。 在这里查看 。 TUCall似乎是一个调用对象,通过它您可以获取详细信息或结束详细信息,而TUCallCenter具有传入的调用方法。 因此,这确实可以工作,仅在私有发行版中,而不是App Store应用程序中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.