2016-12-09 1 views
0

좋아요, 구조체 또는 Swift에서 다루는 시련에 익숙하지 않습니다.하지만 필요한 것은 iMessage의 이미지 부분을 의미하는 스티커가 포함 된 내 iMessage 앱 확장에 iMessage를 만드는 것입니다. 스티커에.Swift에서 구조체에 문제가 있고 URL에서 UIImage를 만드는 중입니까?

나는 애플의 문서와 https://www.captechconsulting.com/blogs/ios-10-imessages-sdk-creating-an-imessages-extension을 훑어 보았지만 어떻게하는지 또는 실제로 어떻게 구조체가 작동하는지 이해하지 못한다. 구조체를 읽었지만 Apple이 샘플 코드에서 수행하는 작업 (Apple에서 다운로드 가능)을 수행하는 데 도움이되지 못했습니다.

Apple은 처음에는 구조체를 속성으로 사용하여 이해하는 메시지를 작성합니다. 나는 메시지를 작성하는 대신

guard let conversation = activeConversation else { fatalError("Expected a conversation") } 
     //Create a new message with the same session as any currently selected message. 
     let message = composeMessage(with: MSSticker, caption: "sup", session: conversation.selectedMessage?.session) 

     // Add the message to the conversation. 
     conversation.insert(message) { error in 
      if let error = error { 
       print(error) 
      } 
     } 

그들은 다음이 (이 샘플 코드에서 직접입니다) 할 스티커를 수행하십시오

fileprivate func composeMessage(with iceCream: IceCream, caption: String, session: MSSession? = nil) -> MSMessage { 
     var components = URLComponents() 
     components.queryItems = iceCream.queryItems 

     let layout = MSMessageTemplateLayout() 
     layout.image = iceCream.renderSticker(opaque: true) 
     layout.caption = caption 

     let message = MSMessage(session: session ?? MSSession()) 
     message.url = components.url! 
     message.layout = layout 

     return message 
    } 
} 

기본적으로이 라인은 임 내가 설정해야합니다으로 함께 문제가 무엇인가 내 스티커 이미지로 :

layout.image = iceCream.renderSticker(opaque: true) 

애플은 내가 그들의 스티커에서 이미지 부분을 끌어 renderSticker에 이해가 안 전체 복잡한 기능의 일을, 내가 그들의 방법을 시도했지만 난이 더 좋은 생각 :

let img = UIImage(contentsOfURL: square.imageFileURL) 
     layout.image = ing 

layout.image에는 UIImage가 필요하며이 스티커에서 imageFileURL을 얻을 수 있습니다. UIImage로 가져올 수 없습니다. 사용 가능한 과부하와 일치하지 않는 오류가 발생합니다.

여기서 어떻게 할 수 있습니까? 내 스티커의 이미지를 메시지에 어떻게 삽입 할 수 있습니까? 해당 imageFileURL에서 이미지를 가져올 수 있습니까?

+0

질문의 끝 부분에'UIImage' 이니셜 라이저에 관한 질문이있는 경우 왜 그와 관련없는 다른 정보를 모두 게시 했습니까? 귀하의 질문에 초점을 맞추십시오. – rmaddy

+0

미안하지만, iMessage와 관련이 있고 구조체가 필요하다고 생각했습니다. – skyguy

답변

1

UIImage에 대해서는 init(contentsOfURL:) 이니셜 라이저가 없습니다. 가장 가까운 것은 init(contentsOfFile:)입니다.

은 당신이 할 수있는 파일의 URL과 함께 그 하나를 사용하십시오

let img = UIImage(contentsOfFile: square.imageFileURL.path) 
+0

이미지뿐만 아니라 스티커 만 보낼 수있는 방법이 있는지 알고 계십니까? – skyguy

+0

나는 스티커에 대해 아무것도 모른다. – rmaddy

2

내가 정확히 질문이 무엇인지 확실하지 않다, 그러나 나는 내가 할 수있는만큼 해결하기 위해 노력하겠습니다 -

rmaddy가 언급했듯이 파일 위치가 지정된 이미지를 만들려면 그가 지정한 UIImage 생성자를 사용하기 만하면됩니다.

그냥 스티커 (rmaddy의 답변에 대한 질문에서 물어 본)를 보내는 것처럼 스티커를 iMessage 대화에 삽입 할 수 있습니다. 이 기능은 MSConversation의 일부로 사용할 수 있습니다. 활성 대화가 당신의 MSMessagesAppViewController에서 액세스 할 수 있습니다

https://developer.apple.com/reference/messages/msconversation/1648187-insert

: 여기에 문서에 대한 링크입니다.

+0

내가 두 번 투표 할 수 있다면 나는 할 것이다.감사합니다. 문서에서 건너 뛰었습니다. – skyguy

관련 문제