Открытие локального файла с помощью InAppBrowser под iOS не работает

Я разрабатываю мобильное приложение с использованием Cordova. Это приложение позволяет пользователям перемещаться в своего рода файловом менеджере и позволяет им загружать файлы. Я использую плагин «FileTransfer» для загрузки файла на устройство пользователя, а затем вызываю плагин InAppBrowser (версия 0.5.2), чтобы открыть его.

Хотя он отлично работает под Android, я не могу сказать то же самое под iOS (проверено на версиях 7 и 8).

Это строка кода, которую я использую для открытия загруженного файла:

window.open(entry.toURL(), "_system");

В Android он предлагает пользователю, какое приложение он хочет запустить, чтобы открыть файл, или автоматически запускает приложение по умолчанию на основе расширения файла. Под iOS файл скачивается и дальше ничего не происходит. Я обнаружил, что могу использовать встроенный просмотрщик плагина InAppBrowser, когда пользователь находится под iOS. Я делаю это таким образом:

if (navigator.userAgent.match(/iPhone|iPod|iPad/))
    window.open(entry.toURL(), "_blank");
else
    window.open(entry.toURL(), "_system");

С помощью этих строк кода, если пользователь находится под iOS, запускается встроенный просмотрщик и отображает файл. Проблема заключается в ZIP-файлах или других файлах, которые не могут быть отображены в средстве просмотра. Здесь написано "Ошибка загрузки".

Я думаю, что если бы "_system" сработало, Safari запустился бы и предложил бы пользователю, как он хочет открыть файл.

Кто-нибудь знает, как заставить «_system» работать в iOS? Является ли это в конечном итоге известной проблемой (я не смог найти ничего, связанного с моей проблемой)?

Если это может иметь отношение к моей проблеме, я использую Phonegap Build для создания файла .ipa.


person Opec    schedule 15.10.2014    source источник


Ответы (1)


В iOS, когда вы используете _system, он пытается открыть URL-адрес, который вы передаете с помощью сафари. Поскольку в iOS есть ограничения на доступ к песочнице, Safari не может открыть URL-адрес, потому что он находится внутри песочницы вашего приложения.

Вы можете попробовать этот плагин, он предоставляет диалоговое окно «Открыть с помощью», которое покажет вам приложения, которые поддерживают тип файла, который вы хотите открыть, если таковой имеется.

https://build.phonegap.com/plugins/1076

person jcesarmobile    schedule 20.10.2014
comment
Спасибо за объяснение песочницы. Читая комментарии к плагину, который вы предлагаете, кажется, что он не работает с последними версиями Cordova. Но плагин File Opener2, кажется, делает почти то, что я хотел сделать, и совместим с Phonegap Build (ссылка). - person Opec; 22.10.2014