わかりました、私は Swift で扱っている構造体や試練に慣れていませんが、iMessage アプリの拡張機能でステッカーを含む iMessage を作成する必要があります。つまり、iMessage の画像部分がに設定されています。ステッカー。
Apple のドキュメントと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)
Appleは、ステッカーから画像部分を引き出すために、私には理解できない複雑な機能全体を実行します。renderSticker
私は彼らの方法を試しましたが、これはより良いと思います:
let img = UIImage(contentsOfURL: square.imageFileURL)
layout.image = ing
layout.image には UIImage が必要で、ステッカーから imageFileURL を取得できますが、これを UIImage に入れることはできません。利用可能なオーバーロードと一致しないというエラーが表示されます。
ここで何ができますか?ステッカーの画像をメッセージに挿入するにはどうすればよいですか? imageFileURL から画像を取得するにはどうすればよいですか?