Я разрабатываю мобильное приложение с использованием 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.