Невозможно использовать плагин InAppBrowser для Phonegap 3.1 на iOS 7

Я в процессе переноса приложения iOS, которое я построил с помощью Phonegap на iOS7 с Phonegap 3.1, и у меня возникла небольшая проблема.

iOS 7, похоже, внесла некоторые существенные изменения в эти гиперссылки с помощью target="_blank" attribute теперь открываются по умолчанию в самом приложении, а не в системном браузере (это, похоже, не происходит на Android или предыдущих версиях iOS). Это нарушило некоторые функции приложения, и мне нужно исправить этот.

использование плагина InAppBrowser похоже на путь, поэтому я установил плагин. Я изменил конфигурацию.xml для включения этого:

<feature name="InAppBrowser">
        <param name="ios-package" value="CDVInAppBrowser" />
</feature>

и ссылка в шаблоне теперь выглядит так (Обратите внимание, что я использую руль в качестве системы шаблонов здесь):

<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"
  ]
]

существует также ряд предупреждений об устаревании the CDVInAppBrowser.m исходный файл.

Я не могу понять, почему плагин не поднимается. Может ли кто-нибудь еще предположить, в чем может быть проблема?

4 ответов


Я нашел истинное решение для этого без необходимости воссоздавать проект. основываясь на этом ответе:аналогичный вопрос и ответ

похоже, что это происходит потому, что иногда файлы проекта xcode не обновляются после добавления/удаления плагинов. Все файлы на месте, и config.xml в порядке, но проект xcode не может пометить новые файлы плагинов как целевые приложение.

enter image description here

устранение:

  1. откройте свой проект в xcode
  2. перейдите к файлу плагина в вопросе (CDV*.файл м)
  3. в правом меню в разделе "целевое членство" убедитесь, что флажок установлен для вашего приложения.

enter image description here


UPDATE-попробуйте ответить barryrowe ниже, прежде чем прибегать к воссозданию совершенно нового проекта. Это простое, простое решение, которое, как представляется, хорошо работает. Спасибо, Барри!

я столкнулся с подобной ошибкой несколько раз после удаления плагинов и переустановки их. Единственное решение, которое когда-либо работало для меня, - начать заново с совершенно нового проекта приложения, а затем скопировать обратно в файлы из моей папки " www " и повторить все необходимые изменения в В Xcode.

глядя на https://issues.apache.org/jira/browse/CB-4971 похоже, что это ошибка, которую команда Cordova пытается отследить. Эта ссылка имеет некоторые альтернативные предложения, но начать заново, вероятно, еще проще, если ваше приложение не имеет много пользовательских изменений Xcode, которые необходимо будет сделать заново.

Я не так хорошо знаком с рулем, но ваш код, похоже, имеет дополнительную запятую и пробел после {{this.url}}. Но я думаю, что ваш главный проблема связана с самим плагином, а не код.

кстати, если вы правильно установили плагин InAppBrowser с помощью командной строки, вам не нужно будет вручную изменять конфигурацию.xml-файл, так как необходимый код плагина будет автоматически добавлен в конфигурацию.xml-файлы соответствующих платформ при следующем построении проекта.


его легко исправить:

также должна быть организация.апаш.Кордова.inappbrowser в каталог в вашей /plugins/ и /platforms/ios/myApp/Plugins/ папки. Это должно выглядеть так:

-----/org.apache.cordova.inappbrowser
---------/CDVInAppBrowser.h
---------/CDVInAppBrowser.m

Почему-то,org.apache.cordova.inappbrowser похоже, не работал с моим приложением - возможно, обновление или что-то сломало функциональность. Плагин присутствовал, как предложил @star18bit, но я думаю, что моя проблема была совместимостью.

Я удалил существующий плагин:

cordova plugin remove org.apache.cordova.inappbrowser

переустановлено с помощью cordova-плагин-inappbrowser:

cordova plugin add cordova-plugin-inappbrowser

после ionic build ios и перезапустить, проблема была решена.