我正在尝试在iOS上使用Cordova InAppBrowser,但它似乎无法正常工作。
我找到了一些可能的解决方案:https://goo.gl/G7GfGg http://goo.gl/sYXfRg
有些人需要手动修改文件,但我正在使用Phonegap Build,所以我无法修改插件,也有一些关于config.xml的说明,所以这是我当前的配置:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="au.gov.nal.hearing.myhearing" version="0.10.3" versionCode="624" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:gap="http://phonegap.com/ns/1.0">
<gap:platform name="ios"/>
<gap:platform name="android"/>
<preference name='phonegap-version' value='cli-5.2.0' />
<name>My Hearing</name>
<description>My Hearing App</description>
<author email="rene@bywave.com.au" href="http://bywave.com.au/">Renemari Padillo</author>
<content src="index.html"/>
<preference name="AutoHideSplashScreen" value="true"/>
<preference name="SplashScreenDelay" value="5000"/>
<preference name="ShowSplashScreenSpinner" value="false"/>
<preference name="FadeSplashScreen" value="true"/>
<preference name="FadeSplashScreenDuration" value="1.0"/>
<preference name="SplashScreen" value="screen"/>
<preference name="detect-data-types" value="true"/>
<preference name="target-device" value="handset"/>
<access origin="*"/>
<access origin="*.google.com"/>
<access origin="*.parse.com"/>
<access origin="*.googleapis.com"/>
<access origin="*.gstatic.com"/>
<access origin="*.googleusercontent.com"/>
<access origin="google.com" subdomains="true"/>
<access origin="googleapis.com" subdomains="true"/>
<access origin="gstatic.com" subdomains="true"/>
<access origin="googleusercontent.com" subdomains="true"/>
<access origin="parse.com" subdomains="true"/>
<access origin="tel:*" launch-external="yes"/>
<allow-navigation href="*"/>
<allow-intent href="tel:*" launch-external="yes"/>
<allow-intent href="*" launch-external="yes"/>
<gap:plugin name="cordova-plugin-x-socialsharing" source="npm" version="5.0.4"/>
<gap:plugin name="com.ionic.keyboard" version="1.0.3"/>
<gap:plugin name="uk.co.whiteoctober.cordova.appversion" version="0.1.4"/>
<gap:plugin name="org.apache.cordova.splashscreen" version="0.3.4"/>
<gap:plugin name="cordova-plugin-inappbrowser" source="npm" version="1.0.1"/>
<gap:plugin name="cordova-plugin-whitelist" source="npm" version="1.0.0"/>
<gap:plugin name="org.apache.cordova.core.geolocation" version="0.3.10"/>
<gap:plugin name="com.medlei.pushplugin" version="0.1.2">
<param name="APP_ID" value="Bd8dbfMRwToBaB8UP0SWZ0ZlgYJ2o1CqMtFqzkuh"/>
<param name="CLIENT_KEY" value="0ev2Je3JX3ln5XJHTsFTbJwNpG7k5eXpt5l83CVs"/>
</gap:plugin>
<icon src="resources/icon.png"/>
<icon gap:platform="android" src="resources/android/icon/drawable-ldpi-icon.png" gap:density="ldpi"/>
<icon gap:platform="android" src="resources/android/icon/drawable-mdpi-icon.png" gap:density="mdpi"/>
<icon gap:platform="android" src="resources/android/icon/drawable-hdpi-icon.png" gap:density="hdpi"/>
<icon gap:platform="android" src="resources/android/icon/drawable-xhdpi-icon.png" gap:density="xhdpi"/>
<icon gap:platform="android" src="resources/android/icon/drawable-xxhdpi-icon.png" gap:density="xxhdpi"/>
<icon gap:platform="android" src="resources/android/icon/drawable-xxxhdpi-icon.png" gap:density="xxxhdpi"/>
<icon gap:platform="ios" src="resources/ios/icon/icon.png" width="57" height="57"/>
<icon gap:platform="ios" src="resources/ios/icon/icon@2x.png" width="114" height="114"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-40.png" width="40" height="40"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-40@2x.png" width="80" height="80"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-50.png" width="50" height="50"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-50@2x.png" width="100" height="100"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-60.png" width="60" height="60"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-60@2x.png" width="120" height="120"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-60@3x.png" width="180" height="180"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-72.png" width="72" height="72"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-72@2x.png" width="144" height="144"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-76.png" width="76" height="76"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-76@2x.png" width="152" height="152"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-small.png" width="29" height="29"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-small@2x.png" width="58" height="58"/>
<icon gap:platform="ios" src="resources/ios/icon/icon-small@3x.png" width="87" height="87"/>
<gap:splash src="resources/splash.png"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-land-ldpi-screen.png" gap:qualifier="land-ldpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-land-mdpi-screen.png" gap:qualifier="land-mdpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-land-hdpi-screen.png" gap:qualifier="land-hdpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-land-xhdpi-screen.png" gap:qualifier="land-xhdpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-land-xxhdpi-screen.png" gap:qualifier="land-xxhdpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" gap:qualifier="land-xxxhdpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-port-ldpi-screen.png" gap:qualifier="port-ldpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-port-mdpi-screen.png" gap:qualifier="port-mdpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-port-hdpi-screen.png" gap:qualifier="port-hdpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-port-xhdpi-screen.png" gap:qualifier="port-xhdpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-port-xxhdpi-screen.png" gap:qualifier="port-xxhdpi"/>
<gap:splash gap:platform="android" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" gap:qualifier="port-xxxhdpi"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-568h@2x~iphone.png" height="1136" width="640"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-667h@2x.png" height="1334" width="750"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-736h.png" height="2208" width="1242"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-Landscape-736h.png" height="1242" width="2208"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-Portrait-736h@3x.png" width="1242" height="2208"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-Landscape-736h@3x.png" width="2208" height="1242"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-Landscape@2x~ipad.png" height="1536" width="2048"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-Landscape~ipad.png" height="768" width="1024"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-Portrait@2x~ipad.png" height="2048" width="1536"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default-Portrait~ipad.png" height="1024" width="768"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default@2x~iphone.png" height="960" width="640"/>
<gap:splash gap:platform="ios" src="resources/ios/splash/Default~iphone.png" height="480" width="320"/>
</widget>
所以为了确保安全,我还将插件与ngCordova's
InAppBrowser
$cordovaInAppBrowser.open('tel:' + vm.phone, '_system');
的index.html
<!-- Enable all requests, inline styles, and eval() -->
<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src 'self' 'unsafe-inline' *">
该应用没有产生任何错误,呼叫链接适用于Android,但不适用于iOS。
有人有解决方案吗?
如果您需要更多技术细节,请与我们联系。
由于
答案 0 :(得分:1)
@Renesansz,
Top Mistakes by Developers new to Cordova/Phonegap的#10}
此外,该链接还包含更多特定于iOS的信息。
我引用:
#10不添加新的&#34;白名单&#34;,&#34;白名单插件&#34; config.xml中的参数和&#34;内容安全策略&#34;
这是一个新的和令人讨厌的东西,人们只能对返回的开发人员有所了解。此外,这被埋在Phonegap博客和Cordova博客中。
这个相对*新*要求意味着 - 要访问网络上的任何网站或资源,您必须使用白名单和白名单插件。如果您使用cordova-android@4.0.0或更高版本,此要求将生效;包括cli-5.1.1。但是,如果您的版本在4.0.0之前,请使用3.5.0或3.7.0,那么您就不必添加白名单要求。
要明确,&#34;白名单&#34;已经存在了一段时间,但插件和要求是非常新的。正如您所期望的那样,&#34;白名单&#34;添加了,defacto开放访问功能已被弃用。或者说另一种方式,事实上开放访问功能已被计划并计划被淘汰。此更改标志着删除开放访问功能的一个步骤。
此外,内容安全策略(CSP)已经吸引了众多开发人员 - 因为它的公开性很差。 根据您的使用情况和您使用的Phonegap版本,CSP需要进入您使用的每个HTML页面,就像您必须等待“设备准备”一样。但是,有些情况根本不需要它。文档让一些人感到困惑,请仔细阅读。文档隐藏在许多最新文档页面的底部。
答案 1 :(得分:0)
@Renesansz,
在我们解决可能存在的问题之前,我已经添加了一些你可以修复的东西。
我很清楚,我应该让你解决困扰大多数人的另外两个主要问题。在你的情况下,有第三个和第四个问题。接下来需要做的四件事是:
<feature (...)>
的所有引用 - 请参阅下文来自Top Mistakes by Developers new to Cordova/Phonegap你已经点击了:
对于#6&amp; #7
您没有版本号 使用CLI版本,如果您没有为您的平台分配版本,或者在“Phonegap Build&#39;&#39;&#39; Phonegap Build&#39;&#39;如果你没有在config.xml中设置phonegap-version,你将获得最新版本。如果运气好,您的程序就会按预期运行。如果你不幸运,你会得到一系列级联错误。
幸运的是,对于我们所有人来说,Holly Schinsky写了一篇很好的博文来解释这一切:
Cordova / PhoneGap版本混淆
http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/
虽然文章有点陈旧,但概念和方向是正确的。只是,请确保使用新的拼写作为名称,使用短划线,而不是句点。
您需要立即从NPM获取插件。
关于采购插件的规则可能相当混乱。最好的办法是阅读下面的博客文章。使用CLI的开发人员可以从github获取,再次参见博客文章。
2015-10-09 - 如果没有公告,推文或博客,存储库会在计划之前整整一周更改。我无能为力,但抱怨......这真令人讨厌。
<feature>
个代码。这意味着他们不再使用。
你可以read about it here
除
debug-server
功能外, PhoneGap Build 基本上不推荐使用<feature>
标记,因为 PhoneGap API 已经过插件化。现在,权限通常由各个插件管理,并且可以使用config-file element直接修改应用程序清单和权限。但是,为了向后兼容,它们仍受支持并映射到Android和Windows Phone 8上的设备权限:
换句话说,您有一个重复的配置,它什么都不做。拿出来。