我想将Apple Callkit与Agora VOiP集成到Swift 4 iOS中。
请提出任何建议,我该怎么做。
答案 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 })
}
这是基本代码。您将不得不添加案例以模拟来电和其他自定义。我希望这可以帮助您进一步发展。