【问题标题】:Cordova inappbrowser not working when build in xcode在 xcode 中构建时,Cordova inappbrowser 无法正常工作
【发布时间】:2020-08-29 19:08:07
【问题描述】:

自 4 月 30 日起,Apple 不允许使用低于 13 的 SDK 构建应用程序。我曾经使用 Phonegap 构建 (https://build.phonegap.com/) 构建我的应用程序,但它使用 SDK 12。现在我尝试使用 Xcode 构建我的应用程序。

我使用 Phonegap 构建并使用测试分发配置文件在我的手机上安装此构建的每个构建都像一个魅力,但是当我使用与我的 Phonegap 构建相同的 config.xml 构建应用程序时,inappbrowser 不是不再工作了。

我认为这与自 SKD 13 起被贬低的 UIWebView 有关。因此我使用 Cordova 提供的教程来实现 WkWebview。

我已尝试删除除 wkwebview-engine 和 inappbrowser 之外的所有插件,但这没有任何效果。

  • 科尔多瓦 CLI 9.0.0
  • inappbrowser 3.2.0
  • wkwebview-engine 1.2.1
  • ios平台新增5.1.1

我的 config.xml

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.app.name" version="0.2.13" 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">
  <name>appname</name>
  <description>
  </description>
  <author email="mymail" href="mywebsite">
    my name
  </author>
  <content src="dist/index.html"/>
  <platform name="ios"/>
  <platform name="android"/>
  <feature name="http://api.phonegap.com/1.0/network"/>
  <preference name="permissions" value="none"/>
  <preference name="phonegap-version" value="cli-9.0.0"/>
  <preference name="orientation" value="portrait"/>
  <preference name="target-device" value="universal"/>
  <preference name="prerendered-icon" value="true"/>
  <preference name="detect-data-types" value="false"/>
  <preference name="exit-on-suspend" value="false"/>
  <preference name="deployment-target" value="7.0"/>
  <preference name="webviewbounce" value="false"/>
  <preference name="stay-in-webview" value="false"/>
  <preference name="ios-statusbarstyle" value="black-opaque"/>
  <preference name="ShowSplashScreenSpinner" value="true"/>
  <preference name="AutoHideSplashScreen" value="true"/>
  <preference name="android-minSdkVersion" value="19"/>
  <preference name="android-targetSdkVersion" value="28"/>
  <preference name="android-installLocation" value="auto"/>
  <preference name="android-windowSoftInputMode" value="stateVisible|adjustResize"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="ShowSplashScreen" value="true"/>
  <preference name="FadeSplashScreen" value="false"/>
  <preference name="SplashScreenDelay" value="2000"/>
  <preference name="FadeSplashScreenDuration" value="0"/>
  <platform name="android">
    <preference name="fullscreen" value="false"/>
    <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
      <application android:usesCleartextTraffic="true"/>
    </edit-config>
  </platform>
  <platform name="ios">
    <preference name="fullscreen" value="false"/>
  </platform>  
  <access origin="*"/>
  <allow-navigation href="*"/>
  <allow-navigation href="*://*youtube.com"/>
  <access origin="mailto:*" launch-external="true"/>
  <allow-intent href="http://*/*"/>
  <allow-intent href="https://*/*"/>
  <allow-intent href="tel:*"/>
  <allow-intent href="sms:*"/>
  <allow-intent href="mailto:*" launch-external="yes"/>
  <allow-intent href="geo:*"/>
  <platform name="android">
    <allow-intent href="market:*"/>
  </platform>
  <platform name="ios">
    <allow-intent href="itms:*"/>
    <allow-intent href="itms-apps:*"/>
    <allow-navigation href="mailto:*" launch-external="yes"/>
  </platform>
  <feature name="TouchID">
    <param name="ios-package" value="TouchID"/>
  </feature>
  <platform name="ios">
    <preference name="WKWebViewOnly" value="true" />
    <feature name="CDVWKWebViewEngine">
      <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
  </platform>
  <plugin name="cordova-plugin-inappbrowser" spec="3.2.0" />
  <plugin name="cordova-plugin-wkwebview-engine" spec="1.2.1" />
</widget>

在测试之前,我这样做是为了确保所有插件都是全新安装的:

rm -rf package-lock.json package.json platforms plugins/* node_modules
cordova platform add ios@5.1.1

构建完成后,我在 xcode 控制台中只收到以下信息:

2020-05-13 16:23:33.805959+0200 App[7410:670156] [Accessibility] ****************** Loading GAX Client Bundle ****************
2020-05-13 16:23:33.996820+0200 App[7410:670156] Apache Cordova native platform version 5.1.1 is starting.
2020-05-13 16:23:33.998789+0200 App[7410:670156] Multi-tasking -> Device: YES, App: YES
2020-05-13 16:23:34.016143+0200 App[7410:670156] 

Started backup to iCloud! Please be careful.
Your application might be rejected by Apple if you store too much data.
For more information please read "iOS Data Storage Guidelines" at:
https://developer.apple.com/icloud/documentation/data-storage/
To disable web storage backup to iCloud, set the BackupWebStorage preference to "local" in the Cordova config.xml file
2020-05-13 16:23:34.282716+0200 App[7410:670156] CDVWKWebViewEngine will reload WKWebView if required on resume
2020-05-13 16:23:34.283306+0200 App[7410:670156] Using WKWebView
2020-05-13 16:23:34.284438+0200 App[7410:670156] [CDVTimer][console] 0.174999ms
2020-05-13 16:23:34.285355+0200 App[7410:670156] [CDVTimer][handleopenurl] 0.338078ms
2020-05-13 16:23:34.290426+0200 App[7410:670156] Unlimited access to network resources
2020-05-13 16:23:34.291285+0200 App[7410:670156] [CDVTimer][intentandnavigationfilter] 5.457997ms
2020-05-13 16:23:34.292067+0200 App[7410:670156] [CDVTimer][gesturehandler] 0.302076ms
2020-05-13 16:23:34.292696+0200 App[7410:670156] [CDVTimer][TotalPluginStartup] 8.646965ms

我没有解决这个问题的想法。也许有人有一些新鲜的外观,所以我可以尝试一些新事物。

【问题讨论】:

  • 很抱歉忘记显示我如何调用 inappbrowser &lt;v-list-item v-bind:onclick="'window.cordova.InAppBrowser.open(\''+generalSettings[facebook]+'\',\'_blank\',\'usewkwebview=yes,location=no,hideurlbar=true,toolbarcolor=#78A13F,closebuttoncolor=#ffffff,closebuttoncaption='+$t('inappbrowser.close')+'\'); return false;'"&gt;

标签: ios xcode cordova inappbrowser


【解决方案1】:

很好地找到了答案。我的文件结构是 www/dist/index.html,里面有指向 cordova.js 的链接

<script type="text/javascript" src="cordova.js"></script>

必须是:

<script type="text/javascript" src="../cordova.js"></script>

此外,在命令期间:

cordova platform add ios@5.1.1

例如有一些黄色消息:

Failed to install 'cordova-plugin-inappbrowser': Error: Cannot find module 'glob'

我忽略了它们,因为嗯……黄色

经过一些研究,我找到了解决方案。消息执行后:

cordova platform rm ios

然后再说一遍:

cordova platform add ios@5.1.1

第二次成功安装插件,这一次 inappbrowser 再次工作。

现在这是一个workaraound,我仍然遇到的问题是为什么我在第一次添加平台时收到 Failed to install 'cordova-plugin-inappbrowser': Error: Cannot find module 'glob'messages.. ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2015-01-24
    • 2019-06-28
    相关资源
    最近更新 更多