MSConversation gives us the local participant and remote participants. However, I am unable to retrieve the display name of self or other. How do I get these names? 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)
}
As above I have tried to search CNContactsStore, the UUID from MSConversation is different from CNContact.
Unfortunately this is not possible to retrieve any names. The only thing you can do is retrieving the UUID of the local and remote participants. Then you can display there names only into the transcript of the conversation. To do so, when you set a new MSMessage, don't forget the sign $ in the string :
let message = MSMessage(session: theCurrentSession)
let layout = MSMessageTemplateLayout()
layout.caption = "$\(uuidOfTheParticipant) said something"
message.layout = layout
Note : In objective C you don't need to put "\( )" after the "$", this is used only in swift ;)
This will automatically display the name of the corresponding UUID at the bottom of the MSMessage. Have a look here if you want to learn more about the MSMessage layout : https://developer.apple.com/reference/messages/msmessagetemplatelayout
Also, keep in mind that the UUID of the participant is relative to the conversation itself, it will be consistant into one conversation, but will be different for each participants (the UUID identifying me on my device will be different on others devices). Also if a user uninstall your app and reinstall it, all UUID will be different.
So to answer your question you can not rely on this UUID to identificate any user with the CNContact, they are different ;)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With