【问题标题】:How do I retrieve the name of participants in MSConversation?如何在 MSConversation 中检索参与者的姓名?
【发布时间】:2016-12-16 07:00:09
【问题描述】:

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 不同。

【问题讨论】:

    标签: swift ios10 imessage nsuuid


    【解决方案1】:

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

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

    注意: 在 Objective C 中,你不需要在 "$" 后面加上 "\( )",这仅用于 swift ;)

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

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

    因此,要回答您的问题,您不能依靠此 UUID 来识别具有 CNContact 的任何用户,它们是不同的;)

    【讨论】:

    • 感谢“神奇”“$(uuid)”,您能解释一下美元部分是如何产生的吗?我还找不到任何参考
    • 哼,老实说,我真的不知道。这来自 WWDC,我同意你的看法,这是一个神奇的 $。我想这是来自 SDK 的东西。如果有人可以对此添加更多解释,那就太好了:)
    • 我只是想把它分配给一个label.text,NSLog都不行。看起来这种翻译是特定于消息布局的。奇怪!
    • 是的,这在关于 iMessage 的 WWDC 视频中进行了解释。参与者的姓名将仅显示在对话记录中,这意味着您可以设置它的唯一位置是在 MSMessage 布局中。由于它仍处于测试阶段,他们可能会在未来实现更多功能......
    猜你喜欢
    • 2016-12-21
    • 1970-01-01
    • 2018-10-09
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多