2016-09-09 5 views
0

Ich versuche, eine kleine App zu erreichen, wo Sie ein MP4-Video im Hintergrund auf der Uhr herunterladen und einmal heruntergeladen.WatchOS - presentMediaPlayerControllerWithURL Video nicht abspielen

Die Verwendung von WKInterfaceMovie.setVideoURL funktioniert gut mit einem https-Link, aber ich möchte die Lade-UI anpassen.

Nachdem die Videodatei herunterzuladen, ich bewege es zu einer gemeinsamen Gruppe:

originalURL : Optional("/private/var/mobile/Containers/Data/PluginKitPlugin/FD57E33D-4657-497B-9823-A53D289CDF0B/Library/Caches/com.apple.nsurlsessiond/Downloads/com.test.TestWatchVideo.watchkitapp.watchkitextension/CFNetworkDownload_jKLIrU.tmp")

destinationURL : Optional("/private/var/mobile/Containers/Shared/AppGroup/018DA2BA-EB53-45DA-B3EA-792D4879E601/Library/Caches/SampleVideo_360x240_1mb.mp4")

ich removeItemAtURL bin mit (wenn alte Datei vorhanden ist) dann copyItemAtURL die ursprüngliche Datei zu bewegen.

=>ABER wenn presentMediaPlayerControllerWithURL versucht, es entlässt vor Video-Wiedergabe und sagt:

Error: Error Domain=com.apple.watchkit.errors Code=4 "The operation could not be completed" UserInfo={NSLocalizedFailureReason=An unknown error occurred (1), NSUnderlyingError=0x16d71f20 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}, NSLocalizedDescription=The operation could not be completed}

Ich habe gelesen, schon einige Threads auf Stackoverflow und Foren, und keiner hat mir geholfen.

Danke!

+1

traf ich diesen Fehler, da ich mehrere Dateien im selben Block zuzugreifen versuchte. Der Fix, der für mich funktionierte, war das Ändern der Code-Struktur, so dass jede Datei-URL erhalten wurde, und dann von gelesen wurde, bevor versucht wurde, die nächste Datei-URL zu erhalten. –

+0

Danke @JagveerSingh, sehr interessant. Ich habe versucht, die Operation in verschiedenen Blöcken zu trennen, aber es scheint mir nicht zu helfen. In meinem Fall bekomme ich die heruntergeladene Datei in URLSession.didFinishDownloadingToURL, lösche altes destURL, kopiere heruntergeladene Datei in destURL, dann presentMediaPlayer mit destURL, in der Hauptwarteschlange. Siehst du irgendein Problem darin? –

Antwort

0

OK, dies war ein Problem der App Group Capabilities der WatchKit App; Die App hatte das gute Recht, die WatchKit App Extension war auch in Ordnung, aber die WatchKit App tat das nicht => Operation ist nur erlaubt, wenn versucht wird Video abzuspielen.

Dies funktionierte am Simulator, unabhängig von der Konfiguration.

0

Schalter auf den App Gruppen WatchKit App ...