3

ユーザーが相互に写真をやり取りする iMessage 拡張機能を作成しています。両者は、お互いから受け取った画像にアクセスし、それを自分の側で使用できる必要があります。たとえば、ユーザー 1 が子犬の写真をユーザー 2 に送信した場合、メッセージ レイアウトのイメージ プロパティは子犬のものになります。USER 2 がそのメッセージをタップすると、子犬が画面上の画像ビューにロードされます。これまでのところ、私はこれをどのように行うかわかりません。

ここで、レイアウト イメージを子犬のイメージに設定します。

@IBAction func sendPicturePressed(_ sender: AnyObject) {

    if chosenImage.image != nil {

        let session = MSSession()
        let message = MSMessage(session: session)
        let conversation = self.activeConversation
        let components = URLComponents()

        let layout = MSMessageTemplateLayout()

        let image = chosenImage.image
        layout.image = image

        message.layout = layout
        message.url = components.url!

        conversation?.insert(message, completionHandler: { (error) in

            self.dismiss()

        })

    }
}

2 番目のユーザーが子犬をタップしたときに、画面上の画像ビューを子犬に設定したいと考えています。正確な方法はわかりませんが、私がやりたいことは次のとおりです。

override func willBecomeActive(with conversation: MSConversation) {

    imageView.image = conversation.selectedMessage.layout.image

    //There is no image property to access this like I've provided, that's just what I'm trying to accomplish.
}
4

2 に答える 2

4

別のユーザーから送信されたレイアウト イメージにアクセスすることはできません。 https://forums.developer.apple.com/thread/53174

nil レイアウトを持つ選択されたメッセージが予期されます。受信したメッセージには、レイアウト オブジェクトが入力されていません。

送信者側でできることは、MSMessageに画像レイアウトを挿入するだけMSConversationでなく、画像のコピーをサーバーにアップロードし、 で Web 画像の URL をマークすることMSMessage.URLです。

次回ユーザーがメッセージを選択したときに、ラップを解除MSMessage.URLして画像の URL を見つけ、サーバーからダウンロードすることができます。

于 2016-10-31T06:23:02.653 に答える