Невозможно использовать плагин InAppBrowser для Phonegap 3.1 на iOS 7
Я в процессе портирования приложения iOS, которое я создал с помощью Phonegap для iOS7 с помощью Phonegap 3.1, и я столкнулся с небольшой проблемой.
iOS 7, похоже, внес существенные изменения в то, что гиперссылки с target="_blank" attribute
теперь открываются по умолчанию в самом приложении, а не в системном браузере (это, похоже, не происходит на Android или предыдущих версиях iOS, однако). Это нарушило некоторые функции приложения, и мне нужно исправить это.
Использование плагина InAppBrowser похоже на способ перехода, поэтому я установил плагин. Я изменил свой config.xml, чтобы включить это:
<feature name="InAppBrowser">
<param name="ios-package" value="CDVInAppBrowser" />
</feature>
И ссылка в шаблоне теперь выглядит так (обратите внимание, что я использую Handlebars в качестве системы шаблонов здесь):
<a href="#" onclick="window.externalbrowser = window.open('{{this.url}}, ', '_system', 'location=yes');" data-transition="slide">
<img alt="Favicon" style="border: 1px solid #ccc;" title="Favicon" class="ui-li-icon" src="{{this.favicon_url}}"></img>
<p style="font-size: 100%"><strong>Submitted {{this.whenSubmitted}}</strong><br />Last changed {{this.lastChanged}}</p>
</a>
Всякий раз, когда я нажимаю ссылку, она не открывается, и я вижу следующую ошибку в журналах:
Plugin 'InAppBrowser' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
2013-11-08 10:22:56.753 MyApp[197:60b] -[CDVCommandQueue executePending] [Line 117] FAILED pluginJSON = [
"InAppBrowser814285423",
"InAppBrowser",
"open",
[
"http:\/\/www.site.co.uk\/deals-offers-savings\/b?ie=UTF8&node=350613011&tag=page0e-21,",
"_system",
"location=yes"
]
]
Существует также ряд предупреждений об устаревании исходного файла CDVInAppBrowser.m
.
Я не могу на всю жизнь понять, почему плагин не подбирается. Может ли кто-нибудь еще предположить, что может быть проблемой?
Ответы
Ответ 1
Я нашел для вас истинное решение без необходимости воссоздать проект. на основе этого ответа: аналогичный вопрос и ответ
Похоже, это происходит потому, что иногда файлы проекта xcode не обновляются после добавления/удаления плагинов. Все файлы на месте, и config.xml в порядке, но
Проект xcode не может пометить новые файлы плагинов как целевые приложения.
![enter image description here]()
Решение:
- Откройте проект в xcode
- Перейдите к соответствующему файлу плагина (файл CDV *.m)
- В правом меню в разделе "Целевое членство" убедитесь, что флажок установлен для вашего приложения.
![enter image description here]()
Ответ 2
ОБНОВЛЕНИЕ. Попробуйте ответить ниже, прежде чем приступать к воссозданию совершенно нового проекта. Это простое, простое в использовании решение, которое, как представляется, работает хорошо. Спасибо, Барри!
Я несколько раз сталкивался с подобной ошибкой после удаления плагинов и их повторной установки. Единственное решение, которое когда-либо работало для меня, - начать заново с нового проекта приложения, а затем скопировать обратно в файлы из моей "www" папки и переделать любые необходимые изменения в Xcode.
Глядя на https://issues.apache.org/jira/browse/CB-4971, похоже, что это ошибка, которую команда Кордовы пытается отследить. У этой ссылки есть несколько альтернативных предложений, но запуск заново по-прежнему, вероятно, проще, если только ваше приложение не имеет много настраиваемых изменений Xcode, которые необходимо будет переделать.
Я не знаком с Handlebars, но ваш код выглядит как дополнительная запятая и пробел после {{this.url}}
. Но я думаю, что ваша основная проблема связана с самим плагином, а не с кодом.
Кстати, если вы правильно установили плагин InAppBrowser с помощью командной строки, вам не нужно вручную изменять файл config.xml, так как необходимый код плагина будет автоматически добавлен в файлы config.xml соответствующих платформ, когда вы строите свой проект.
Ответ 3
Его легко исправить:
В папках /plugins/
и /platforms/ios/myApp/Plugins/
также должен быть каталог org.apache.cordova.inappbrowser.
Он должен выглядеть так:
-----/org.apache.cordova.inappbrowser
---------/CDVInAppBrowser.h
---------/CDVInAppBrowser.m
Ответ 4
По какой-то причине org.apache.cordova.inappbrowser
, похоже, не работает с моим приложением - возможно, обновление или что-то сломало функциональность. Плагин присутствовал как @star18bit, но я думаю, что моя проблема была совместимость.
Я удалил существующий плагин:
cordova plugin remove org.apache.cordova.inappbrowser
Переустановлено с помощью cordova-plugin-inappbrowser:
cordova plugin add cordova-plugin-inappbrowser
После ionic build ios
и перезапуска проблема была решена.