如何检索 MSConversation 参与者的姓名?
How do I retrieve the name of participants in MSConversation?
MSConversation 为我们提供了本地参与者和远程参与者。但是,我无法检索自己或其他人的显示名称。我如何获得这些名称?
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
注意:
在 objective C 中你不需要在 "$" 后面加上 "\( )",这只在 swift 中使用 ;)
这样会自动在MSMessage底部显示对应UUID的名称。如果您想了解有关 MSMessage 布局的更多信息,请查看此处:https://developer.apple.com/reference/messages/msmessagetemplatelayout
此外,请记住,参与者的 UUID 是相对于对话本身的,它在一次对话中是一致的,但对于每个参与者来说都是不同的(我的 UUID 在我的设备在其他设备上会有所不同)。此外,如果用户卸载您的应用并重新安装,所有 UUID 都会不同。
因此,为了回答您的问题,您不能依赖此 UUID 来识别具有 CNContact 的任何用户,它们是不同的 ;)
MSConversation 为我们提供了本地参与者和远程参与者。但是,我无法检索自己或其他人的显示名称。我如何获得这些名称? 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
注意: 在 objective C 中你不需要在 "$" 后面加上 "\( )",这只在 swift 中使用 ;)
这样会自动在MSMessage底部显示对应UUID的名称。如果您想了解有关 MSMessage 布局的更多信息,请查看此处:https://developer.apple.com/reference/messages/msmessagetemplatelayout
此外,请记住,参与者的 UUID 是相对于对话本身的,它在一次对话中是一致的,但对于每个参与者来说都是不同的(我的 UUID 在我的设备在其他设备上会有所不同)。此外,如果用户卸载您的应用并重新安装,所有 UUID 都会不同。
因此,为了回答您的问题,您不能依赖此 UUID 来识别具有 CNContact 的任何用户,它们是不同的 ;)