修改“* -Info.plist”CFBundleURLTypes的两个cordova插件

时间:2014-11-12 12:19:56

标签: ios cordova cordova-plugins

我有2个正在修改CFBundleURLTypes的cordova插件: 第一个:

<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文件?

2 个答案:

答案 0 :(得分:7)

在Cordova 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>

在Cordova 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(fb $ APP_ID),另一个用于URL SCHEME插件。我们检查了facebook插件源代码,以便能够修改源代码,并从此目录添加插​​件,而不是从GIT获取。

在phonegap-facebook-plugin&#39s的plugin.xml中:

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

On&#34;插件添加&#34;的facebook-plugin,为另一个插件提供URL_SCHEME。

这样,当安装facebook插件时,它会为两个插件添加两个URL方案。我知道这是解决这个问题的非常糟糕的方式,但我们需要尽快使用此功能,而且无法等待Cordova添加此功能。

如果你们有其他方法,请告诉我。

答案 1 :(得分:0)

我使用这句话在Apache Cordova的IOS PLATFORM上添加“ URL类型”:

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

            <key>CFBundleURLName</key>
            <string>**PACKAGE_ID**</string>
        </dict>
    </array>
</config-file>