Ich versuche Video zu teilen PHAsset über UIActivityController mit requestAVAsset. Dies funktioniert mit Messaging, aber nicht mit AirDrop, was als "Fehlgeschlagen" angezeigt wird.Sharing Video PHAsset über UIActivityController
PHCachingImageManager.default().requestAVAsset(forVideo: asset, options: nil, resultHandler:
{ (givenAsset, audioMix, info) in
let videoAsset = givenAsset as! AVURLAsset
let videoURL = videoAsset.url
DispatchQueue.main.async {
let activityViewController = UIActivityViewController(
activityItems: [videoURL],
applicationActivities: nil)
activityViewController.excludedActivityTypes = [UIActivityType.saveToCameraRoll]
if let popoverPresentationController = activityViewController.popoverPresentationController {
popoverPresentationController.barButtonItem = (sender)
}
self.present(activityViewController, animated: true, completion: nil)
}
})
Das scheint richtig UIActivityController und nur arbeiten mit bestimmten Aktivitäten zu setzen:
- Messaging - ✔️Works, richtig Video exportiert.
- AirDrop - ✖️Shows "Failed"
- Dropbox - ✖️Puts auf die richtige Dropbox Ansicht, sagt noch "ein unbekannter Fehler aufgetreten"
Wie konnten Sie sicherstellen, dass es aus dem Ordner Dokumente gelöscht wurde, wenn Sie fertig sind? – Gizmodo
Ich habe diese zwei Möglichkeiten: 1) mein Anwendungsfall war das Hochladen von Video zu S3. Ich wusste, wann es fertig war, und konnte die Datei löschen. 2) Als Sicherung habe ich eine Liste der kopierten Dateien (in NSUserDefaults) beibehalten und veraltete Dateien beim Start der App regelmäßig gelöscht. Außerdem habe ich diese Dateien in einem temporären Verzeichnis gespeichert (wie man es von 'NSFileManager.URLForDirectory (.ItemReplacementDirectory ...) 'erhält. Im schlimmsten Fall räumt iOS die Dateien schließlich auf.) –
@Gizmodo können Sie die Antwort akzeptieren, wenn sie funktioniert für dich? Danke! –