Estoy usando UIActivityViewController para compartir un archivo PDF:
let pdfFilePath = URL(string: "https://www.tutorialspoint.com/swift/swift_tutorial.pdf") let pdfData = NSData(contentsOf: pdfFilePath!) let activityVC = UIActivityViewController(activityItems: [pdfData!], applicationActivities: nil) present(activityVC, animated: true, completion: nil)Se muestra el siguiente resultado:
Lo que quiero es mostrar más funciones como "copiar a Libros" y "Agregar a Notas" como las siguientes:
Si desea compartir su archivo pdf que está en el servidor y tiene una URL. Luego, primero descarga ese archivo en su dispositivo y luego comparte ese archivo con cualquier otra persona.
Si usa Alamofire en su código, entonces hay un código.
estribo 1
import Alamofireestribo 2
Agregue esta función en su clase: -
func downloadPdf(downloadUrl : String, fileName: String, completionHandler:@escaping(String, Bool)->()){ let destinationPath: DownloadRequest.DownloadFileDestination = { _, _ in let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]; let fileURL = documentsURL.appendingPathComponent("\(fileName).pdf") return (fileURL, [.removePreviousFile, .createIntermediateDirectories]) } print(downloadUrl) Alamofire.download(downloadUrl, to: destinationPath) .downloadProgress { progress in } .responseData { response in print("response: \(response)") switch response.result{ case .success: if response.destinationURL != nil, let filePath = response.destinationURL?.absoluteString { completionHandler(filePath, true) } break case .failure: completionHandler("", false) break } } }estribo 3
Agrega esta acción en tu botón de compartir
@IBAction func btnShareAction(_ sender: UIButton) { let myURL = "http://www.demo.com/demo.pdf" // change this with your URL self.downloadPdf(downloadUrl : myURL, fileName: "invoice") { (localFileUrl, bool) in let fileURL = NSURL(fileURLWithPath: localFileUrl) let activityViewController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil) self.present(activityViewController, animated: true, completion: nil) } }