2017-12-18 4 views
0

ich laden Sie die Videodatei von URL und es in Dokumentenverzeichnis mit diesem Pfad speichern:Document Verzeichnispfad ändern, wenn die Anwendung neu erstellen

let destination: DownloadRequest.DownloadFileDestination = { _, _ in 
     let pathComponent = "pack\(self.packID)-\(selectRow + 1).mp4" 
     let directoryURL: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 
     let folderPath: URL = directoryURL.appendingPathComponent("Downloads", isDirectory: true) 
     let fileURL: URL = folderPath.appendingPathComponent(pathComponent) 
     return (fileURL, [.removePreviousFile, .createIntermediateDirectories]) 
    } 

mein Video heruntergeladen und spielt erfolgreich. aber es gibt ein Problem, wenn ich Anwendung in Xcode neu erstellen und versuche, das letzte Video, das ich heruntergeladen habe, abzuspielen, wird Video nicht gezeigt, und wenn ich ein neues Video herunterlade, speichern und spielen Sie erfolgreich.

Ich habe jeden Video-Bundle-Pfad gesehen, sie sind unterschiedlich.

1 - file: /// Users/MyMac/Library/Developer/CoreSimulator/Geräte/EAC2F4CE-EA09-46C0-B403-1CE9E24B6822/data/Container/Daten/Anwendung/1D2C1F7B-E627-4898-91C1 -D0AF8D5E0F1E/Dokumente/Downloads/pack7-1.mp4

2 - Datei: /// Benutzer/myMac/Library/Entwickler/CoreSimulator/Geräte/EAC2F4CE-EA09-46C0-B403-1CE9E24B6822/Daten/Container/Daten/Anwendung/F950E9A5-C9F3-4B8C-BCF5-647EEC233CEE /Documents/Downloads/pack7-3.mp4

Nun, meine Frage ist, wenn wir die App aus dem App Store aktualisieren, bedeutet dies eine Neuinstallation? Ändert sich dieser Pfad?

Wie kann dieses Problem lösen?

+0

@ivarun: Nicht wahr! Ab iOS 8 ändert sich die absolute URL der App bei jedem Start der App https://stackoverflow.com/questions/26988024/document-or-cache-path-changes-on-e-every-launch-in-ios-8 –

+0

@ ivarun Ich teste es im Gerät, wenn App von XCODE wiederholt ausgeführt wird, ohne die App zu deinstallieren, die auch im Gerät passiert. – ava

+0

@ava: Hast du die Antwort überprüft, die ich gepostet habe? Hat das nicht geholfen? irgendwelche weiteren Probleme? –

Antwort

4

Ab iOS 8 wird die Sandbox "Absolute URL zur App" jedes Mal geändert, wenn Sie die App neu starten. Daher solltest du niemals die absolute URL des Videos speichern. Speichern Sie den Namen des Videos und erstellen Sie die URL jedes Mal neu, wenn Sie die App neu starten.

let pathComponent = "pack\(self.packID)-\(selectRow + 1).mp4" 
    let directoryURL: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 
    let folderPath: URL = directoryURL.appendingPathComponent("Downloads", isDirectory: true) 
    let fileURL: URL = folderPath.appendingPathComponent(pathComponent) 

Sobald Sie fileURL Blick für die Datei haben, und Sie werden die Datei in früheren Start heruntergeladen zu finden.

iOS erstellt bei jedem Start der App eine neue Sandbox für die App. Daher wird absolute URL sehr. Aber iOS wird dafür sorgen, dass alle Ordner und Inhalte in der Sandbox wie zuvor eingerichtet werden. Obwohl sich die Basis-URL von SandBox ändert, bleiben die relativen URLs des gesamten Inhalts intakt.

Daher ist es ratsam, nie absolute URL in einen Ordner zu speichern :) Hoffe, es hilft

+0

someOne kann auf diesen Ordner im Dokumentenverzeichnis zugreifen und diesen Ordnerinhalt kopieren? – ava

+0

@ava: Wenn diese Person Zugriff auf das iPhone hat, dann ja :) Sie können Ihr iPhone immer mit Mac verbinden und Apps von Drittanbietern verwenden, um die Sandbox für Apps zu öffnen und den Inhalt zu kopieren. Wenn Sie die Datei gegen diese Arten des Zugriffs sichern wollen, gibt es mehrere Lösungen –

+0

@ava: Lösung 1: Speichern Sie die Datei im Temp-Ordner. Keiner der im temporären Ordner gespeicherten Inhalte wird von iCloud unterstützt und auch keine Apps können darauf zugreifen. Aber ein Haken ist, dass Inhalt im temporären Ordner nicht beibehalten wird. Wenn App gelöscht wird, gehen alle Inhalte im temporären Ordner verloren: D Daher der Name temp. lesen Sie: https: //developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html –

Verwandte Themen