2014-11-12 1 views
4

У меня есть 2 Cordova плагинов, которые модифицирующие CFBundleURLTypes: Первый:Два Cordova плагинов модифицирующие "* -Info.plist" CFBundleURLTypes

<config-file target="*-Info.plist" parent="CFBundleURLTypes"> 
    <array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
     <string>$URL_SCHEME</string> 
     </array> 
    </dict> 
    </array> 
</config-file> 

Вторая:

<config-file target="*-Info.plist" parent="CFBundleURLTypes"> 
    <array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
     <string>fb$APP_ID</string> 
     </array> 
    </dict> 
    </array> 
</config-file> 

Только первый добавленный плагин модифицирует «* -Info.plist».

Есть ли способ сделать оба плагина для добавления файла -Info.plist?

+0

Я думаю, вам следует открыть запрос функции или проблему на кордове JIRA – jcesarmobile

+0

Спасибо, я открыл ее: https://issues.apache.org/jira/browse/CB-8007 – Miquel

ответ

7

На Кордова 3.6.3-0.2.13, оба значения конфигурации будут добавлены, но таким образом:

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>fb12345678</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>anotherUrlScheme</string> 
     </array> 
    </dict> 
</array> 

На Кордова 4.0 и выше (4.0.0, 4.1.2, 4.2.0) , второе значение добавленной конфигурации плагина просто проигнорируется. Таким образом, PLIST будет выглядеть (Предполагается, что facebook плагин прибудет добавили первый):

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>fb12345678</string> 
     </array> 
    </dict> 
</array> 

В качестве обходного пути, мы модифицировали facebook плагин для добавления два схем URL, один из APP_ID (фб $ APP_ID) и создал еще один для плагина URL SCHEME. Мы проверили источник плагина facebook, чтобы иметь возможность изменять источник, и добавили плагин из этого каталога вместо того, чтобы получать от GIT.

В plugin.xml PhoneGap-facebook-плагина:

<config-file target="*-Info.plist" parent="CFBundleURLTypes"> 
    <array> 
     <dict> 
      <key>CFBundleURLSchemes</key> 
      <array> 
      <string>fb$APP_ID</string> 
      <string>$URL_SCHEME</string> 
      </array> 
     </dict> 
    </array> 
</config-file> 

На "плагин добавить" из facebook-плагин, обеспечить URL_SCHEME для другого плагина.

Таким образом, он добавит обе схемы URL для обоих плагинов при установке плагина facebook. Я знаю, что это действительно очень хакерский способ решить эту проблему, но мы должны выполнить эту функцию как можно скорее и не можем дождаться, пока Кордова добавит эту функцию.

Пожалуйста, дайте мне знать, если у вас есть другой подход.

+0

Я добавлю это к мой уже длинный список пользовательских модификаций плагина, спасибо :) –

+0

Спасибо за обходной путь. Хотя это не решает проблему с другими плагинами, это хорошее решение. – Miquel