【问题标题】:Send PDF/Text using twilio Programmable chat api使用 twilio 可编程聊天 API 发送 PDF/文本
【发布时间】:2019-03-07 10:32:51
【问题描述】:

我正在使用适用于 iOS 的 Twilio 可编程聊天 SDK 创建一个聊天应用程序。我按照documentation 使用 SDK 发送图像、文本,它工作正常。

但是当我尝试使用内容类型应用程序/pdf 或文本发送 pdf 时,它会抛出以下错误。

Error Domain=signal.sdk.domain.error Code=101 "" UserInfo={kTCHErrorMsgKey=, NSLocalizedDescription=}

以下是我用来发送 pdf 的代码,

        do {
                let fileData = try Data(contentsOf: pickedDocUrl)
                // Prepare the upload stream and parameters
                let messageOptions = TCHMessageOptions()
                let inputStream = InputStream(data: fileData)
                messageOptions.withMediaStream(inputStream,
                                               contentType: "application/pdf",
                                               defaultFilename: "\(pickedDocUrl.lastPathComponent.components(separatedBy: ".")[0]).pdf",
                    onStarted: {
                        // Called when upload of media begins.
                        print("Media upload started")
                },
                    onProgress: { (bytes) in
                        // Called as upload progresses, with the current byte count.
                        print("Media upload progress: \(bytes)")
                }) { (mediaSid) in
                    // Called when upload is completed, with the new mediaSid if successful.
                    // Full failure details will be provided through sendMessage's completion.
                    print("Media upload completed")
                }

                // Trigger the sending of the message.
                self.generalChannel?.messages?.sendMessage(with: messageOptions,
                                                           completion: { (result, message) in
                                                            self.pickedDocUrl = nil

                                                            if !result.isSuccessful() {
                                                                print("Creation failed: \(String(describing: result.error))")
                                                            } else {
                                                                print("Creation successful")
                                                            }
                })
            } catch {
                print("Unable to load data: \(error)")
            }

【问题讨论】:

    标签: ios swift twilio


    【解决方案1】:

    我有同样的问题..通过从文件中添加 MIME 或内容类型来修复它

    let mimeType =  mimeTypeForPath(path: fileUrl.path)
    
        func mimeTypeForPath(path: String) -> String {
            let url = NSURL(fileURLWithPath: path)
            let pathExtension = url.pathExtension
            if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension! as NSString, nil)?.takeRetainedValue() {
                if let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() {
                    return mimetype as String
                }
            }
            return "application/octet-stream";
        }
    

    【讨论】:

      猜你喜欢
      • 2018-10-10
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多