如何将社交个人资料与CallKit API进行映射

现在我正在尝试将CallKit集成到现有的VoIP应用程序中。

根据API,通过CallKit报告的每个呼叫都有一个与之关联的句柄。 我们的应用程序的用户可以进行audio和video呼叫,这是build立在帐户之间,他们没有任何关联的“电话号码”,所以我们设置呼叫处理types为“通用”,并使用一些特殊的帐户标识符作为这些处理的值。 这些用户帐户不是用户友好的,不应该在UI中显示。

所以有一个自然的愿望,在通话logging中显示真实的用户名。 这是我们碰到路障的地方。

根据WWDC会议,社交个人资料将是集成CallKit的VoIP应用程序之间的一种链接,所以我的问题是如何创build社交个人资料并将其与Callkit API链接?

与几个VoIP应用程序检查后,我不认为这是创build一个新的联系人与这些信息的正确方法,因为我找不到他们在联系人。

任何意见/build议/帮助将不胜感激!

提前致谢。

它迟到的答复,但它可能会帮助未来的观众。 你可以在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) } 

之后,主要的诀窍就是在你的StartDelegate的StartCallAction中更新你的调用

 public func provider(provider: CXProvider, performStartCallAction action: CXStartCallAction) { let update = CXCallUpdate() update.remoteHandle = action.handle update.hasVideo = action.video update.localizedCallerName = action.contactIdentifier //Here contactIdentifier is assigned callee name on start call self.provider.reportCallWithUUID(action.callUUID, updated: update) // Rest of your code } 

对于拨入呼叫,请设置CXCallUpdate的localizedCallerName

在你的通话logging中会显示类似的内容

在这里输入图像说明