代码之家  ›  专栏  ›  技术社区  ›  Arpit Jain Vivek Sharma

使用QuickBlox SDK 2.17以附件形式发送视频

  •  0
  • Arpit Jain Vivek Sharma  · 技术社区  · 8 年前

    我尝试过各种链接中的代码,但不知何故,在最新的SDK中似乎没有任何功能。 我正在尝试以下代码:

    let message = QBChatMessage()
    message.senderID = (self.senderID)
    message.dialogID = self.chatDialogModel.id
    message.dateSent = Date()
    message.readIDs = [NSNumber.init(value: (self.senderID))]
    message.deliveredIDs = [NSNumber.init(value: (self.senderID))]
    
    let aURL = Bundle.main.url(forResource: "testVideo", withExtension:"mp4")
    let aData = try! Data(contentsOf: aURL!)
    
    QBRequest.tUploadFile(aData, fileName: "Attachment Video", 
                         contentType:"video/mp4", 
                         isPublic: true, successBlock: { (qbResponse, qbBlob) in
    
       let attachment : QBChatAttachment = QBChatAttachment()
        attachment.type = "video"
        attachment.id = qbBlob.uid
        attachment.url = qbBlob.publicUrl()
        message.attachments = [attachment]
        message.text = "Attachment video"
    
        self.chatDataSource.add(message)
    
    
    ServicesManager.instance().chatService.sendAttachmentMessage(message, to: (self.chatDialogModel)!, with: attachment, completion: { [weak self] (error) -> Void in
    
    
      self?.attachmentCellsMap.removeObject(forKey: message.id as AnyObject?)
      guard error != nil else { return }
      self?.chatDataSource.delete(message)
    
     })
    
    }, statusBlock: nil) { (error) in
    
    }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Arpit Jain Vivek Sharma    8 年前

    我想出了一个解决办法:

    首先编写从照片库获取本地视频文件URL的代码。有了URL后,调用此函数。

    func sendVideoAsAttachment(_ url : URL){
    
        let message = QBChatMessage()
        message.senderID = (self.senderID)
        message.dialogID = self.chatDialogModel.id
        message.dateSent = Date()
    
        let attachment = QBChatAttachment.videoAttachment(withFileURL: url)
        self.chatDataSource.add(message)
    
        ServicesManager.instance().chatService.sendAttachmentMessage(message, to: self.chatDialogModel, with: attachment, completion: { (error) in
    
            self.attachmentCellsMap.removeObject(forKey: message.id as AnyObject?)
            guard error != nil else { return }
            self.chatDataSource.delete(message)
        })
    }
    

    这将以附件形式发送视频。