0

わかりました、私は 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 から画像を取得するにはどうすればよいですか?

4

2 に答える 2

2

質問が正確に何であるかはわかりませんが、できる限り対処しようとします-

rmaddy が述べたように、ファイルの場所を指定して画像を作成する場合は、彼が指定した UIImage コンストラクターを使用するだけです。

ステッカーだけを送信する限り (rmaddy の回答に関するコメントで質問しました)、ステッカーだけを iMessage の会話に挿入できます。この機能は、MSConversation の一部として利用できます。ドキュメントへのリンクは次のとおりです。

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

アクティブな会話には、MSMessagesAppViewController からアクセスできます。

于 2016-12-10T02:05:47.947 に答える
1

init(contentsOfURL:)の初期化子はありませんUIImage。最も近いのはinit(contentsOfFile:)です。

ファイル URL でそれを使用するには、次のようにします。

let img = UIImage(contentsOfFile: square.imageFileURL.path)
于 2016-12-10T00:43:01.303 に答える