Próbuję udostępnić film PHAsset poprzez UIActivityController wykorzystaniem requestAVAsset. Działa to z Messaging, ale nie z AirDrop, co oznacza "Failed".Udostępnianie wideo PHAsset poprzez 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)
}
})
Wydaje się prawidłowo wystawione UIActivityController i działa tylko z niektórych rodzajów działalności:
- Messaging - ✔️Works właściwie eksportuje wideo.
- zrzut - ✖️Shows "Failed"
- Dropbox - ✖️Puts się prawidłowego Dropbox View, jeszcze mówi "Nieznany błąd"
Jak udało Ci się upewnić, że jest on usunięty z folderu Dokumenty po zakończeniu? – Gizmodo
Zrobiłem to na dwa sposoby: 1) moim przypadkiem użycia było przesyłanie wideo do S3. Wiedziałem, kiedy to się skończyło i mogłem usunąć plik. 2) Jako kopię zapasową utrzymałem listę skopiowanych plików (w NSUserDefaults) i okresowo usunąłem nieaktualne pliki podczas uruchamiania aplikacji. Ponadto zapisałem te pliki w katalogu tymczasowym (uzyskanym z 'NSFileManager.URLForDirectory (.ItemReplacementDirectory ...)'. W najgorszym przypadku iOS wyczyści pliki w końcu. –
@Gizmodo możesz zaakceptować odpowiedź, jeśli działa dla ciebie? Dzięki! –