我想在 swift 4 iOS 中将苹果 Callkit 与 Agora VOiP 集成。
请提出任何建议我该怎么做。
要集成 voip,您必须同时使用 callKit 和 PushKit。
CallKit 将用于在通话转换期间显示本机呼叫屏幕和处理程序,而 Pushkit 将用于在应用程序被终止时调用应用程序。
它易于集成:-
在 info.plist 中启用后台模式并选中“应用程序提供 IP 语音服务”选项。在视图控制器 viewdidload/ 任何类的任何 init 方法中导入 Callkit,您将用于实现 CXProviderDelegate 函数。通过这个,您将配置呼叫对象、何时报告来电、接受操作、拒绝操作等。
实现以下功能:
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 })
}
这是一个基本的代码概览。您将不得不添加案例来模拟来电和其他自定义。我希望这能帮助你走得更远。