ios10 - 如何从接收用户端的 MSMessage 布局访问图像?

标签 ios10 imessage msmessage msmessagetemplatelayout

我正在制作一个 iMessage 扩展,涉及用户来回发送图片。他们都需要能够访问从彼此那里收到的图像,并在自己的终端上使用它。例如,如果 USER 1 向 USER 2 发送一张小狗的图片,则消息布局的图像属性将为小狗。然后用户 2 应该能够点击该消息,小狗将加载到屏幕上的 ImageView 中。到目前为止,我不知道该怎么做。

在这里我将布局图像设置为小狗的图像。

@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()

        })

    }
}

现在,当第二个用户点击小狗时,我想在他们的屏幕上为小狗设置 ImageView 。不确定如何,但我想做的是:

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

最佳答案

您无法访问其他用户发送的布局图像。 https://forums.developer.apple.com/thread/53174

The selected Message having a nil layout is expected. Received messages won't have a layout object filled in.

你可以做的是,在发件人方面,你不仅可以将带有图像布局的 MSMessage 插入到 MSConversation 中,还可以将图像副本上传到你的服务器并标记MSMessage.URL 中的网络图像 URL。

因此下次当用户选择一条消息时,您可以打开 MSMessage.URL 并找到图像 URL,然后从您的服务器下载它。

关于ios10 - 如何从接收用户端的 MSMessage 布局访问图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40209653/

相关文章:

iOS 10 中的自动布局增加高度并使 Y 位置为负

ios - 如何制作只显示当前消息的 iMessage 应用程序?

swift - expectationForPredicate 失败测试用例

bluetooth - 如何在 iOS 10 中以编程方式打开蓝牙设置

apple-push-notifications - ios10 自定义推送通知声音未播放

ios - 如何以编程方式检查电子邮件是否已通过 imessage 激活?

ios - 在 iMessage 扩展中使用 Firebase 时崩溃

ios - iOS 中有没有一种方法可以在不显示消息 View Controller 的情况下发送文本消息?

ios - 如何在 MSMessage 中嵌入 URL?