ios - 来自 native 调用 UI 的 VOIP 去电

标签 ios voip callkit

每当我在 VOIP 应用程序中接到来电时,我都可以在 native iPhone 通话 UI 上看到日志。

我想通过单击最后一个来电从 UI 的 native iPhone 通话记录中调用电话。就像它适用于 WhatsApp、Skype、环聊等。

如何才能拨出电话?

以下是我为来电编写的方法:

-(void)reportIncomingCall:(NSUUID*)UDID handle:(NSString*)handle;
-(CXCallController*)startCall:(NSUUID*)UDID handle:(NSString*)handle
-(void)connectCallWithCallController:(CXCallController*)controller

我知道还有一种拨出电话的方法。但我不知道什么时候调用这个:

- (NSUUID *)reportOutgoingCallContactIdentifier:(NSString *)identifier destination:(NSString *)name telNumber:(NSString *)telnum 

最佳答案

当点击 native iOS 通话记录中的项目时,将调用应用程序委托(delegate)的 continueUserActivity 函数。我的实现在 Swift 中看起来像这样:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {

    self.startCallHandle = userActivity.startCallHandle
    // Cache call handle here, and make call using cached call handle 
    // when applicationDidBecomeActive is called

    return true

}

startCallHandle 在文件 NSUserActivity+StartCallConvertible.swift 中定义,如 SpeakerBox 示例项目所示。

在您应用的 Info.plist 中,您必须具有 INStartAudioCallIntent 和/或 INStartVideoCallIntent。再次查看 SpeakerBox 示例应用以获取详细信息。

关于ios - 来自 native 调用 UI 的 VOIP 去电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53989833/

相关文章:

ios - 如何在应用程序中获取voip通话记录信息 - Call Kit

ios - UISplitViewController Master View 在 vi​​ewDidAppear 中的帧大小

ios - 在试飞中发布时推送通知不会到来

android - Android 中使用 openfire 的 VoIP 和 SIP 客户端应用程序

iOS:如何正确安装保持事件处理程序?

ios - 如何删除 IOS CallKit 中的顶部栏?

Android ConnectionService 来电

ios - 未找到未过期的配置文件

ios - 即使 allowsEditing 为真,editingInfo 中也没有 UIImagePickerControllerEditedImage

asterisk - 如何使用 PJSIP 在 Asterisk 上转发 sip 调用?