Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

600
Vistas
Cómo habilitar el permiso de archivos y carpetas en iOS

Estoy tratando de descargar un archivo usando AlamoFire y guardarlo en un directorio de descargas elegido por el usuario (como safari). Sin embargo, cada vez que configuro el directorio de descarga en una carpeta fuera de los documentos de mi aplicación, aparece el siguiente error (en un dispositivo iOS real):

downloadFileMoveFailed(error: Error Domain=NSCocoaErrorDomain Code=513 ""CFNetworkDownload_dlIcno.tmp" no se pudo mover porque no tiene permiso para acceder a "Descargas"." UserInfo={NSSourceFilePathErrorKey=/private/var/mobile/Containers/ Datos/Aplicación/A24D885A-1306-4CE4-9B15-952AF92B7E6C/tmp/CFNetworkDownload_dlIcno.tmp, NSUserStringVariant=(Mover), NSDestinationFilePath=/private/var/mobile/Containers/Shared/AppGroup/E6303CBC-62A3-4206-7C044-E934DEC /Almacenamiento del proveedor de archivos/Descargas/100MB.bin, NSFilePath=/private/var/mobile/Containers/Data/Application/A24D885A-1306-4CE4-9B15-952AF92B7E6C/tmp/CFNetworkDownload_dlIcno.tmp, NSUnderlyingError=0x281d045d0 {Error Domain=NSPOS Código=1 "Operación no permitida"}}, origen: archivo:///private/var/mobile/Containers/Data/Application/A24D885A-1306-4CE4-9B15-952AF92B7E6C/tmp/CFNetworkDownload_dlIcno.tmp, destino: archivo: ///private/var/mobile/Containers/Shared/AppGroup/E6303CBC-62A3-4206-9C84-E37041894DEC/File%20Provider%20Sto rabia/Descargas/100MB.bin)

El resumen de ese error es que no tengo permiso para acceder a la carpeta a la que acabo de otorgar acceso.

Aquí está mi código adjunto:

 import SwiftUI import UniformTypeIdentifiers import Alamofire struct ContentView: View { @AppStorage("downloadsDirectory") var downloadsDirectory = "" @State private var showFileImporter = false var body: some View { VStack { Button("Set downloads directory") { showFileImporter.toggle() } Button("Save to downloads directory") { Task { do { let destination: DownloadRequest.Destination = { _, response in let documentsURL = URL(string: downloadsDirectory)! let suggestedName = response.suggestedFilename ?? "unknown" let fileURL = documentsURL.appendingPathComponent(suggestedName) return (fileURL, [.removePreviousFile, .createIntermediateDirectories]) } let _ = try await AF.download(URL(string: "https://i.imgur.com/zaVQDFJ.png")!, to: destination).serializingDownloadedFileURL().value } catch { print("Downloading error!: \(error)") } } } } .fileImporter(isPresented: $showFileImporter, allowedContentTypes: [UTType.folder]) { result in switch result { case .success(let url): downloadsDirectory = url.absoluteString case .failure(let error): print("Download picker error: \(error)") } } } }

Para reproducir (ejecutar en un dispositivo iOS REAL!):

  1. Haga clic en el botón Set downloads directory en On my iPhone
  2. Haga clic en el botón Save to downloads directory
  3. Se produce un error

Luego de una mayor investigación, descubrí que Safari usa el permiso de privacidad Files and Folders (ubicado en Settings > Privacy > Files and folders en un iPhone) para acceder a carpetas fuera del entorno limitado de la aplicación ( este enlace para la imagen de lo que estoy hablando) . Busqué en la web tanto como pude y no pude encontrar ninguna documentación para este permiso exacto.

He visto aplicaciones que no son de Apple (como VLC) que usan este permiso, pero no puedo entender cómo se otorga.

Intenté habilitar las siguientes propiedades de plist, pero ninguna funciona (porque luego me di cuenta de que son solo para macOS)

 <key>NSDocumentsFolderUsageDescription</key> <string>App wants to access your documents folder</string> <key>NSDownloadsFolderUsageDescription</key> <string>App wants to access your downloads folder</string> <key>LSSupportsOpeningDocumentsInPlace</key> <true/> <key>UIFileSharingEnabled</key> <true/>

¿Puede alguien ayudarme a descubrir cómo otorgar permisos a los archivos y carpetas y explicar qué hace? Apreciaría mucho la ayuda.

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda