如何使用JSQMessagesViewController发送图像?

时间:2016-04-30 13:53:30

标签: swift firebase xcode7 jsqmessagesviewcontroller

我正在使用JSQMessagesViewController和Firebase与Twitter登录。 enter image description here

我可以使用“didPressSendButton”成功发送短信。

现在我要发送图像了。我有一个测试图像。 现在,当我想用​​“didPressAccessoryButton”发送图像时。当此函数执行图像时,在base64中转换并保存在firebase数据库中。但问题是,当我按下didPressAccessoryButton时,蓝色气泡不会显示任何图像。

1 个答案:

答案 0 :(得分:2)

我通过发送您使用的文字来理解:

    override func didPressSendButton(button: UIButton!, withMessageText text: String!, senderId: String!, senderDisplayName: String!, date: NSDate!)
{
self.sendMessage(text, video: nil, picture: nil)
    self.finishSendingMessage()
}

并且你在didFinishPickingMediaWithInfo函数中有一个函数将图像保存在Firebase的base64中,你可以使用下面的代码让图片显示在一个泡泡中,表示我在sendMessage函数中组合了所有函数,但是以下内容应该有所帮助:

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
{
    let picture = info[UIImagePickerControllerEditedImage] as? UIImage

    if (info[UIImagePickerControllerEditedImage] as? UIImage) != nil
    {
        let mediaItem = JSQPhotoMediaItem(image: nil)
        mediaItem.appliesMediaViewMaskAsOutgoing = true
        mediaItem.image = UIImage(data: UIImageJPEGRepresentation(picture, 0.5)!)
        let sendMessage = JSQMessage(senderId: senderId, displayName: self.senderFullName, media: mediaItem)
        self.messages.append(sendMessage)
        self.finishSendingMessage()
    }

    picker.dismissViewControllerAnimated(true, completion: nil)
}
祝你好运(你也可以考虑不在Firebase中存储大图像,因为不建议这样做)