我想在CallKit的帮助下对电话进行操作,但是根据Apple文档,它只能用于进行VOIP call ,是否可以通过任何方式进行拨出电话,结束当前通话并接听来电CallKit的帮助下进行电话通话。
我正在使用专用框架(TelephonyUtilities),尝试进行上述 Activity 。
NSBundle *bundlePath = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/TelephonyUtilities.framework"];
if ([bundlePath load]) {
Class TUCallCenter = NSClassFromString(@"TUCallCenter");
id tuCallCenter = [TUCallCenter sharedInstance];
}
但是,没有TUCallCenter方法允许我从应用程序启动电话 call 。尽管有定义的方法可用。
其中一些是:
- (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,并与其他应用程序和系统协调您的 call 服务。
概述
CallKit使您可以将 call 服务与系统上其他与 call 相关的应用程序集成在一起。 CallKit提供了 call 接口,您可以通过VoIP服务处理后端通信。对于传入和传出 call ,CallKit显示与“电话”应用程序相同的界面,从而使您的应用程序具有更原始的外观。而且,CallKit可以对系统级别的行为做出适当的响应,例如“请勿打扰”。
除了处理 call ,您还可以提供“ call 目录”应用程序扩展,以提供 call 者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
希望这有助于了解情况。
关于ios - CallKit Framework是否可以拨打,接听和结束电话通话,或者仅用于VOIP通话?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44795332/