带有 Phonegap Build 的 Cordova 插件白名单在 iOS 上不起作用

Posted

技术标签:

【中文标题】带有 Phonegap Build 的 Cordova 插件白名单在 iOS 上不起作用【英文标题】:Cordova Plugin Whitelist with Phonegap Build doesn't work on iOS 【发布时间】:2017-01-19 23:05:40 【问题描述】:

我在我的 cordova 应用程序中使用了 cordova-plugin-whitelist (v 1.3.1)。 我的 config.xml 中有一条规则

<allow-intent href="tel:*"/>

我的应用中有如下代码:

window.open('tel:2065551212');

如果我在本地构建并部署到应用商店,代码在 androidios 上都可以正常工作。

如果我使用 Adob​​e 的 Phonegap Build 系统构建,电话:链接仅适用于 android,不适用于 ios。

我尝试了许多不同的设置都无济于事:(

如果有帮助,我正在使用 iOS 10.2。但是,我相信其他版本的 iOS 也会受到类似的影响。

我很想得到帮助!

注意,我的完整 config.xml 文件如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="com.xxx.yyy" version="5.0.6" android-versionCode="6" ios-CFBundleVersion="5.0.6.6"
        xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <name>XXX</name>
  <description>Description...</description>
  <author email="info@xxx.com" href="http://www.example.org/">XXX Team</author>
  <content src="index.html"/>
  <access origin="*" launch-external="yes" />
  <allow-intent href="http://*/*"/>
  <allow-intent href="https://*/*"/>
  <allow-intent href="tel:*"/>
  <allow-intent href="sms:*"/>
  <allow-intent href="mailto:*"/>
  <allow-intent href="geo:*"/>
  <platform name="android">
    <allow-intent href="market:*"/>
  </platform>
  <platform name="ios">    
    <icon src="resources/ios/icon/icon.png"  />
    <icon src="resources/ios/icon/icon@2x.png"  />
    <icon src="resources/ios/icon/icon-40.png"  />
    <icon src="resources/ios/icon/icon-40@2x.png"  />
    <icon src="resources/ios/icon/icon-40@3x.png"  />
    <icon src="resources/ios/icon/icon-50.png"  />
    <icon src="resources/ios/icon/icon-50@2x.png"  />
    <icon src="resources/ios/icon/icon-60.png"  />
    <icon src="resources/ios/icon/icon-60@2x.png"  />
    <icon src="resources/ios/icon/icon-60@3x.png"  />
    <icon src="resources/ios/icon/icon-72.png"  />
    <icon src="resources/ios/icon/icon-72@2x.png"  />
    <icon src="resources/ios/icon/icon-76.png"  />
    <icon src="resources/ios/icon/icon-76@2x.png"  />
    <icon src="resources/ios/icon/icon-83.5@2x.png"  />
    <icon src="resources/ios/icon/icon-small.png"  />
    <icon src="resources/ios/icon/icon-small@2x.png"  />
    <icon src="resources/ios/icon/icon-small@3x.png"  />
    <splash src="resources/ios/splash/Default-568h@2x~iphone.png"  />
    <splash src="resources/ios/splash/Default-667h.png"  />
    <splash src="resources/ios/splash/Default-736h.png"  />
    <splash src="resources/ios/splash/Default-Landscape-736h.png"  />
    <splash src="resources/ios/splash/Default-Landscape@2x~ipad.png"  />
    <splash src="resources/ios/splash/Default-Landscape~ipad.png"  />
    <splash src="resources/ios/splash/Default-Portrait@2x~ipad.png"  />
    <splash src="resources/ios/splash/Default-Portrait~ipad.png"  />
    <splash src="resources/ios/splash/Default@2x~iphone.png"  />
    <splash src="resources/ios/splash/Default~iphone.png"  />
  </platform>
  <preference name="webviewbounce" value="false"/>
  <preference name="UIWebViewBounce" value="false"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="android-minSdkVersion" value="19"/>
  <preference name="BackupWebStorage" value="none"/>
  <preference name="SplashScreenDelay" value="0"/>
  <preference name="FadeSplashScreen" value="false"/>
  <preference name="FadeSplashScreenDuration" value="0"/>
  <preference name="SplashScreenBackgroundColor" value="0xFFFFFFFF"/>
  <feature name="StatusBar">
    <param name="ios-package" onload="true" value="CDVStatusBar"/>
  </feature>
  <plugin name="cordova-plugin-device" spec="~1.1.3"/>
  <plugin name="cordova-plugin-console" spec="~1.0.4"/>
  <plugin name="cordova-plugin-whitelist" spec="1.3.1"/>
  <plugin name="cordova-plugin-splashscreen" spec="~4.0.0"/>
  <plugin name="cordova-plugin-statusbar" spec="~2.2.0"/>
  <plugin name="ionic-plugin-keyboard" spec="~2.2.1"/>
  <plugin name="cordova-plugin-google-analytics" spec="~1.5.6"/>
  <plugin name="cordova-plugin-app-version" spec="~0.1.9" />
  <icon src="resources/ios/icon/icon-small@3x.png"/>
</widget>

【问题讨论】:

【参考方案1】:

我通过在我的 config.xml 文件中添加以下首选项来完成这项工作:

<preference name="phonegap-version" value="cli-6.4.0" />

这告诉 Phonegap Build 使用 cli-6.4.0 而不是其默认值(截至 2017 年 1 月 19 日为 cli-6.3.0)。

注意:我使用的配置文件格式对于两个版本的 cli 似乎都是正确的。我很想深入了解实际发生的情况。

【讨论】:

以上是关于带有 Phonegap Build 的 Cordova 插件白名单在 iOS 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何开始使用带有 Durandal SPA 应用程序的 Phonegap Build?

iOS - 应用程序图标支持带有不同支持iOS版本的Phonegap Build Project的错误

带有 Phonegap Build 的 Cordova 插件白名单在 iOS 上不起作用

使用 phonegap build 构建 phonegap 应用程序

相机插件不适用于 Android 的 PhoneGap Build

PhoneGap Build - 如何将文件保存到移动设备?