swift - 如何使用 JSQMessagesViewController 发送图像?

标签 swift firebase xcode7 jsqmessagesviewcontroller

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

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

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

最佳答案

我认为通过发送您使用的文本:

    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 中存储大图像,因为不建议这样做)

关于swift - 如何使用 JSQMessagesViewController 发送图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955732/

相关文章:

ios - 在 Xcode 7.3 中使用 Swift 实例化核心数据托管对象

使用 Alamofire 快速关闭

swift - UIButton 蓝牙切换

node.js - 持续服务器端 Firebase 监控的方法(Web 应用程序)

firebase - 将自定义 Oauth 提供程序与 firebase.auth().signInWithRedirect 集成?

firebase - 可观察到的困惑

objective-c - UIAlertController:supportedInterfaceOrientations 被递归调用

ios - 定时器未同步

swift - Firebase 3 无法修改其他用户创建的数据

ios - 在 tableView 的顶部添加一行