繁体   English   中英

CallKit Framework是否可以拨打,接听和结束电话通话,或者仅用于VOIP通话?

[英]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的一个例子 CallKit还可以使您的VoIP应用程序呼叫看起来像对用户的普通语音呼叫。

您要查找的内容需要一个私有框架,但是在那种情况下,您要么编码为越狱版本,要么为客户编码私有版本。 为此,您可能需要研究TelephonyUtilities.framework。 在这里查看 TUCall似乎是一个调用对象,通过它您可以获取详细信息或结束详细信息,而TUCallCenter具有传入的调用方法。 因此,这确实可以工作,仅在私有发行版中,而不是App Store应用程序中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM