如何在MSConversation中检索参与者的姓名? [英] How do I retrieve the name of participants in MSConversation?

查看:0
本文介绍了如何在MSConversation中检索参与者的姓名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

MSConversation提供本地参与者和远程参与者。但是,我无法检索到SELF或OTHER的显示名称。我怎么才能知道这些名字? https://developer.apple.com/reference/messages/msconversation

let ids = activeConversation?.remoteParticipantIdentifiers
let otherId = ids?[0].uuidString
let ownId = activeConversation?.localParticipantIdentifier.uuidString
let predicate = CNContact.predicateForContacts(withIdentifiers: [otherId!]);

do { 
    let contacts = try CNContactStore().unifiedContacts(matching: predicate, keysToFetch: [CNContactFamilyNameKey, CNContactGivenNameKey, CNContactNicknameKey, CNContactIdentifierKey])

    for contact in contacts{
        print(contact.givenName)
        print(contact.familyName)
        print(contact.identifier)
    }

} catch let err{
    print(err)
}

如上所述,我已尝试搜索CNContactsStore,来自MSConversation的UUID与CNContact不同。

推荐答案

遗憾的是,这无法检索任何名称。您唯一能做的就是检索本地和远程参与者的UUID。然后您只能将这些姓名显示在对话记录中。为此,当您设置新的MSMessage时,不要忘记字符串中的符号$:

    let message = MSMessage(session: theCurrentSession)
    let layout = MSMessageTemplateLayout()
    layout.caption = "$(uuidOfTheParticipant) said something"
    message.layout = layout

注意: 在目标C中,您不需要在"$"之后加上"()",这只用于快速;)

这将自动在MSMessage的底部显示相应UUID的名称。如果您想了解有关MSMessage布局的更多信息,请查看此处:https://developer.apple.com/reference/messages/msmessagetemplatelayout

此外,请记住,参与者的UUID是相对于对话本身的,它将一致地包含在一个对话中,但每个参与者的UUID会不同(在我的设备上标识我的UUID在其他设备上也会不同)。此外,如果用户卸载您的应用程序并重新安装,则所有UUID都将不同。

为了回答您的问题,您不能依赖此UUID来标识具有CNContact的任何用户,它们是不同的;)

这篇关于如何在MSConversation中检索参与者的姓名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆