2016-08-10 2 views
3

MSConversation은 지역 참가자와 원격 참가자를 제공합니다. 그러나 자체 또는 다른 표시 이름을 검색 할 수 없습니다. 이 이름들은 어떻게 구합니까? 내가 CNContactsStore 검색을 시도 위와 같이 https://developer.apple.com/reference/messages/msconversationMSConversation의 참가자 이름은 어떻게 검색합니까?

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) 
} 

, MSConversation에서 UUID는 CNContact 다릅니다.

답변

7

불행하게도 어떤 이름도 검색 할 수 없습니다. 할 수있는 일은 로컬 및 원격 참가자의 UUID를 검색하는 것입니다. 그런 다음 에 대화 이름 () 만 표시 할 수 있습니다.

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

참고 : 당신이 \ "()"를 넣을 필요가 없습니다 목표 C에서 애프터 새 MSMessage을 설정할 때 이렇게하려면, 문자열의 사인 $를 잊지 마세요 "$"는 swift에서만 사용됩니다.)

이렇게하면 MSMessage 하단에 해당 UUID의 이름이 자동으로 표시됩니다. 당신이 MSMessage 레이아웃에 대한 자세한 내용을 원한다면 여기를 보라 : 또한 https://developer.apple.com/reference/messages/msmessagetemplatelayout

을 참가자의 UUID, 그것은 하나의 대화로 consistant됩니다 대화 자체에 상대적으로 떨어져 있음을 알아 두셔야됩니다 만, 각 참가자마다 다릅니다 (내 기기에서 나를 식별하는 UUID는 다른 기기에서 다를 수 있습니다). 또한 사용자가 앱을 제거하고 다시 설치하면 모든 UUID가 달라집니다.

그래서 당신은 CNContact이있는 모든 사용자를 identificate이 UUID에 의존 할 수 귀하의 질문에, 그들은 다른 대답;)을 '마법' "$ \ (UUID)"에 대한

+0

덕분에, 당신은 설명 할 수 달러 부분이 어떻게 생기는거야? 나는 아직 심판을 찾을 수 없다. – user3774630

+0

정말로 솔직히 나는 정말로 모른다. 이것은 WWDC에서오고, 나는 당신과 동의합니다, 그것은 마법의 $입니다. 나는 그것이 SDK에서 오는 것이라고 추측한다. 만약 누군가가 그것에 대해 더 많은 설명을 추가 할 수 있다면 그것은 좋을 것입니다 :) – RomOne

+0

방금 ​​label.text에 할당하려고했는데, NSLog는 전혀 가지 않습니다. 이 번역은 메시지 레이아웃에만 해당됩니다. 기묘한! – user3774630

관련 문제