如何在Swift 4 iOS中将Callkit与Agora VOiP集成?

时间:2019-01-15 11:12:26

标签: iphone swift3 callkit agora.io

我想将Apple Callkit与Agora VOiP集成到Swift 4 iOS中。

请提出任何建议,我该怎么做。

1 个答案:

答案 0 :(得分:1)

要集成voip,必须同时使用callKit和PushKit。

在呼叫过渡期间,CallKit将用于显示本机呼叫屏幕和处理程序,而当应用被终止时,Pushkit将用于调用应用。

易于集成:-

在info.plist中启用后台模式,并选中选项“ App提供IP语音服务”。  将Callkit导入viewcontroller viewdidload /用于实现CXProviderDelegate函数的任何类的任何init方法。通过此操作,您将配置呼叫对象,何时报告呼叫,接受操作,拒绝操作等。

实现以下功能:

func providerDidReset(_ provider: CXProvider) {
}

func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {
    action.fulfill()
}

func provider(_ provider: CXProvider, perform action: CXEndCallAction) {
    action.fulfill()
}

现在导入Pushkit并实现PKPushRegistryDelegate函数。

a。)像这样配置Pushkit

let registry = PKPushRegistry(queue: nil)
        registry.delegate = self
        registry.desiredPushTypes = [PKPushType.voIP]

b。)实现pushkit令牌功能。您可能必须更新到服务器才能传递voip推送通知

 func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
        print(pushCredentials.token.map { String(format: "%02.2hhx", $0) }.joined())
    }

c。现在,当您收到来电通知时,请执行此功能

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
        let config = CXProviderConfiguration(localizedName: "App name")
        config.iconTemplateImageData = UIImagePNGRepresentation(UIImage(named: "any image name")!)

        config.supportsVideo = true;
        let provider = CXProvider(configuration: config)
        provider.setDelegate(self, queue: nil)
        let update = CXCallUpdate()
        update.remoteHandle = CXHandle(type: .generic, value: "Caller name")
        update.hasVideo = true
        provider.reportNewIncomingCall(with: UUID(), update: update, completion: { error in })
    }
  1. 转到开发人员门户并生成VoIP服务证书并安装。
  2. 在“功能”下启用推送通知。

这是基本代码。您将不得不添加案例以模拟来电和其他自定义。我希望这可以帮助您进一步发展。