2013-11-08 2 views
11

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

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

Использование плагина InAppBrowser похоже на способ перехода, поэтому я установил плагин. Я изменен мой config.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" 
    ] 
] 

Есть также ряд Deprecation предупреждений о CDVInAppBrowser.m Sourc e файл.

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

ответ

25

Я нашел для вас истинное решение без необходимости воссоздать проект. на основе этого ответа: similar question and answer

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

enter image description here

Решение:

  1. Откройте свой проект в Xcode
  2. Перейдите к файлу плагина в вопросе (CDV * .m файл)
  3. В меню правой, под В разделе «Целевое членство» убедитесь, что флажок установлен для вашего приложения.

enter image description here

+0

отлично! Это должен быть принятый ответ! – david

3

ОБНОВЛЕНИЕ - ответьте на приведенный ниже вопрос баррироу, прежде чем приступать к воссозданию совершенно нового проекта. Это простое и простое решение, которое, как представляется, работает хорошо. Спасибо, Барри!

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

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

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

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

+0

Я действительно сделал то, что вы предложили, и это решило проблему (хотя это привело к большому количеству проклятий ...), и приложение в настоящее время ожидает рассмотрения. Я планирую перейти к созданию PhoneGap в самом ближайшем будущем, так что, надеюсь, это должно сделать вещи немного легче. –

+1

Оказывается, это проблема с проблемой установки проекта xcode и может быть разрешена без повторного создания приложения. См. Мой ответ ниже. Имеет отношение к «Целевому членству» – Barryrowe

1

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

Там также должен быть каталог org.apache.cordova.inappbrowser в ваших /plugins/ и /platforms/ios/myApp/Plugins/ папки. Он должен выглядеть следующим образом:

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

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

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

cordova plugin remove org.apache.cordova.inappbrowser 

cordova-plugin-inappbrowser Заново с помощью:

cordova plugin add cordova-plugin-inappbrowser 

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

Смежные вопросы