Niedawno uaktualniłem nasz projekt iOS z Cordova 3.3 do 3.5.Odtwarzanie plików audio nie działa z Cordova 3.5 na iOS
Pliki mp3 (wcześniej pobrane do foldera ze standardowymi dokumentami iOS) nie będą odtwarzane za pomocą interfejsu API mediów/wtyczki. Ten kod działa niezawodnie na iOS dla wielu wersji, w tym Cordova 3.3 ... Pliki mp3 zostały pobrane do podkatalogu o nazwie "Downloads" w folderze "dokumenty" standardowej aplikacji na iOS.
W konsoli XCode Pojawia się następujący błąd:
Nieznany plik zasobu: //localhost/Users/weeasle/Library/Application%20Support/iPhone%20Simulator/6.1/Applications/ {App-ID} /Documents/Downloads/testsound.mp3 "
W moim kodzie (po kilku blokach kodu dla interfejsu API wtyczek plików) otrzymuję katalog za pomocą: downloadDirFullPath = window.appRootDir.toURL();
Aby zachować zgodność z nowymi zmianami w pliku API pliku 3.5, ostatnio zmieniłem to z downloadDirFullPath = window.appRootDir.fullPath;
Czy interfejs API wtyczki Media dla Cordova 3.5 został uszkodzony w celu odtwarzania dźwięku z katalogu aplikacji iOS?
Czy jestem po prostu bardzo zmęczony i brakuje mi czegoś oczywistego ... Wszelkie sugestie i informacje bardzo doceniam.
Chris aka weeasle
UPDATE ON 20/Jun/14: FIX Found. Mogę teraz pobrać pobrane pliki .mp3 do gry na iOS Cordova 3.5 ... Najwyraźniej z nowym systemem plików Cordova 3.5 metoda entry.fullPath nie działa i jest zastąpiona przez entry.toURL() jak na https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md
To działa grzywna podczas wywoływania obrazów za pomocą Cordova. Jednak od pewnego czasu na urządzeniu iOS występowało dziwne wrażenie: w przypadku odtwarzania dźwięku nie akceptuje adresów URL zaczynających się od pliku: /// wymaga tylko bezwzględnych ścieżek, takich jak/var/mobile/Applications/{GUID}/Documents/
Rozwiązaniem i rozwiązaniem jest użycie nowej metody toInternalURL() wywoływanej w pozycji zwróconej przez fileSystem.root.getDirectory. Dokładne wywołanie, którego używam, to downloadDirFullPath = window.appRootDir.toInternalURL(); (wywołane z wpisu przekazanego przez fileSystem.root.getDirectory).
ta zwraca: cdvfile: // localhost/persistent/Pliki do pobrania /, które po wstępnej zawieszone do .mp3 lub innych plików audio odgrywa powodzeniem w iOS ..
Działa to również do wyświetlania obrazów i mediów jest więc jedno niezawodne rozwiązanie dla systemu Cordova iOS 3.5 i nowszych wersji.
Jest to zdecydowanie preferowane rozwiązanie, ponieważ jest bezpieczniejsze niż używanie względnych ścieżek (tak, jakby w przyszłości Apple dokonał istotnych zmian w strukturze plików za pomocą wersji iOS, dostęp do plików mógłby przerwa) ...
Jeszcze jedna uwaga - oprócz powyższych połączeń/metod, downloadDi rName = window.appRootDir.Nazwa; również ustawia cdvfile: ścieżka // localhost/persistent/baza
Weeasle
Czy próbowałeś jakąś ścieżkę Relativ takiego: –
Watsche
Dzięki Watsche za natychmiastową odpowiedź. Właśnie edytowałem pytanie i zobaczyłem twój post ... Niestety jestem kompletnym nowicjuszem z ObjC i polegam na API Cordova/Phonegap ... Jak wspomniano w zredagowanej odpowiedzi, spróbowałem adresowania względnego - niektóre starsze wersje Cordova wspominają adresy względne ... Ale bez radości ... – chris
Dzięki. Wiele drobnych rzeczy się zmienia (czasem tylko ze względu na to) i nigdy nie są udokumentowane. To, czego najbardziej nienawidzę w Cordova/Phonegap – Mirko