现在我正在尝试将CallKit集成到现有的VoIP应用程序中。
根据API,通过CallKit报告的每个呼叫都有一个与之关联的句柄。我们的应用程序的用户可以进行音频和视频通话,这些通话是在帐户之间建立的,并且没有任何关联的“电话号码”,因此我们将呼叫句柄类型设置为“通用”,并使用一些特殊帐户标识符作为这些句柄的值。这些用户帐户不是用户友好的,不应该在UI中显示。
因此,自然希望在通话记录日志中显示真实的用户名。这就是我们遇到障碍的地方。
根据WWDC会议,社交个人资料将是整合CallKit的VoIP应用之间的一种联系,所以我的问题是如何创建社交个人资料并将其与Callkit API链接?
使用多个VoIP应用程序检查后,我认为这是使用这些信息创建新联系人的正确方法,因为我无法在联系人中找到它们。
任何意见/建议/帮助都将受到高度赞赏!!!
提前致谢。
答案 0 :(得分:4)
它的回复很晚,但它可能有助于未来的观众。你可以在ProviderDelegate中欺骗它。只需用你的句柄开始通话通用或 PhoneNumber 。并通过启动呼叫操作向您发送被叫方姓名,如
public func startCall(handle: String,contactIdentifier:String/*Your Callee Name*/, video: Bool = false) {
let handle = CXHandle(type: .Generic, value: handle)
let startCallAction = CXStartCallAction(callUUID: NSUUID(), handle: handle)
startCallAction.video = video
startCallAction.contactIdentifier = contactIdentifier //Callee name goes with action so we can get in Delegate
let transaction = CXTransaction()
transaction.addAction(startCallAction)
requestTransaction(transaction)
}
之后的主要技巧是在 ProviderDelegate 中的 StartCallAction 更新您的通话
public func provider(provider: CXProvider, performStartCallAction action: CXStartCallAction) {
let update = CXCallUpdate()
update.remoteHandle = action.handle
update.hasVideo = action.isVideo
update.localizedCallerName = action.contactIdentifier //Here contactIdentifier is assigned callee name on start call
self.provider.reportCall(with: action.callUUID, updated: update)
// Rest of your code
}
对于来电设置 CXCallUpdate的localizedCallerName
在您的通话记录中,它会显示类似
的内容