Phonegap:CLI 升级到 6.5.0 后的 iOS 错误

Posted

技术标签:

【中文标题】Phonegap:CLI 升级到 6.5.0 后的 iOS 错误【英文标题】:Phonegap: iOS error after CLI upgrade to 6.5.0 【发布时间】:2018-12-10 21:13:03 【问题描述】:

截至 2018 年 12 月 1 日,我根据 Adob​​e 构建云服务的新指南将工作的 Phonegap 应用程序从 CLI 版本 6.1.0 升级到了 6.5.0。 自从我升级到 CLI 版本 6.5.0 后,我的应用程序的 ios 版本遇到了一个新错误。应用程序启动后,活动动画仍然可见,而不是加载应用程序的登录页面。使用 6.1.0 版本,用户将看到位置权限弹出窗口,而 CLI 6.5.0 不会显示该窗口。相反,单击 iPhone 上的主页按钮后,我会看到权限在应用程序外部弹出。无论我在弹出窗口中选择什么,当返回应用程序时,登录屏幕都会完全加载。 这是我当前的 config.xml。我基本上只是将电话差距版本条目从“cli-6.1.0”更改为“cli-6.5.0”。

<?xml version='1.0' encoding='utf-8'?>
<widget xmlns="http://www.w3.org/ns/widgets" 
        xmlns:gap="http://phonegap.com/ns/1.0" 
        xmlns:android="http://schemas.android.com/apk/res/android"
        id=„foo“ 
        version=„1.1“ versionCode="90">

    <gap:config-file platform="ios" parent="CFBundleShortVersionString"> 
        <string>1.1</string>
    </gap:config-file>

    <name>foo</name>

    <description>
        foo
    </description>

    <author email=„foo“ href=„foo“>
        foo
    </author>

    <gap:platform name="ios" />
    <gap:platform name="android" />

    <preference name="permissions" value="none" />
    <preference name="phonegap-version" value="cli-6.5.0" />
    <preference name="orientation" value="portrait" />
    <preference name="fullscreen" value="false" />
    <preference name="target-device" value="handset" />
    <preference name="webviewbounce" value="false" />
    <preference name="prerendered-icon" value="true" />
    <preference name="stay-in-webview" value="false" />
    <preference name="ios-statusbarstyle" value="black-opaque" />
    <preference name="detect-data-types" value="true" />
    <preference name="exit-on-suspend" value="false" />
    <preference name="show-splash-screen-spinner" value="false" />
    <preference name="auto-hide-splash-screen" value="false" />
    <preference name="disable-cursor" value="false" />
    <preference name="android-minSdkVersion" value="15" />
    <preference name="android-installLocation" value="auto" />
    <preference name="EnableViewportScale" value="true" />
    <preference name="KeyboardDisplayRequiresUserAction" value="false" />
    <preference name="HideKeyboardFormAccessoryBar" value="false" />
    <preference name="SuppressesIncrementalRendering" value="false" />
    <preference name="StatusBarOverlaysWebView" value="false" />
    <preference name="StatusBarBackgroundColor" value="#000000" />
    <preference name="KeepRunning" value="true"/>

    <gap:config-file platform="android" parent="/manifest/application">
        <activity android:launchMode="singleTask" />
    </gap:config-file>

    <gap:config-file platform="ios" parent="UIBackgroundModes" overwrite="true">
        <array>
            <string>location</string>
        </array>
    </gap:config-file>

    <gap:config-file platform="ios" parent="LSApplicationQueriesSchemes" overwrite="true">
        <array>
            <string>comgooglemaps</string>
            <string>tomtomhome</string>
            <string>navigon</string>
        </array>
    </gap:config-file>

    <gap:config-file platform="ios" parent="NSLocationAlwaysUsageDescription"> 
        <string>foo</string> 
    </gap:config-file>

    <gap:config-file platform="ios" parent="NSLocationWhenInUseUsageDescription"> 
        <string>foo</string> 
    </gap:config-file>

    <gap:config-file platform="ios" parent="NSMotionUsageDescription"> 
        <string>foo</string> 
    </gap:config-file> 

    <gap:config-file platform="ios" parent="NSPhotoLibraryUsageDescription">  
      <string>foo</string> 
    </gap:config-file> 

    <icon src="icon.png" />
    <icon gap:density="ldpi" gap:platform="android" src="res/icons/android/ldpi.png" />
    <icon gap:density="mdpi" gap:platform="android" src="res/icons/android/mdpi.png" />
    <icon gap:density="hdpi" gap:platform="android" src="res/icons/android/hdpi.png" />
    <icon gap:density="xhdpi" gap:platform="android" src="res/icons/android/xhdpi.png" />

    <icon gap:platform="ios"  src="res/icons/ios/icon-40.png"  />
    <icon gap:platform="ios"  src="res/icons/ios/icon-40@2x.png"  />

    <icon gap:platform="ios"  src="res/icons/ios/icon.png"  />
    <icon gap:platform="ios"  src="res/icons/ios/icon_57_57.png"  />
    <icon gap:platform="ios"  src="res/icons/ios/icon_58_58.png"  />
    <icon gap:platform="ios"  src="res/icons/ios/icon_87_87.png"  />
    <icon gap:platform="ios"  src="res/icons/ios/icon_at_2x.png"  />
    <icon gap:platform="ios"  src="res/icons/ios/icon-40@3x.png"  />

    <gap:splash src="splash.png" />
    <gap:splash gap:platform="android" src="res/splash/android/ldpi.png" gap:density="ldpi" />
    <gap:splash gap:platform="android" src="res/splash/android/mdpi.png" gap:density="mdpi" />
    <gap:splash gap:platform="android" src="res/splash/android/hdpi.png" gap:density="hdpi" />
    <gap:splash gap:platform="android" src="res/splash/android/xhdpi.png" gap:density="xhdpi" />

    <platform name="ios">
        <splash src="res/splash/ios/Default.png"   />
        <splash src="res/splash/ios/Default_at_2x.png"   />
        <splash src="res/splash/ios/Default_iphone5.png"   />
        <splash src="res/splash/ios/Default_iphone6.png"   />
        <splash src="res/splash/ios/Default_iphone6_at3x.png"   />
    </platform>

    <gap:splash gap:platform="ios" src="res/splash/ios/Default.png"   />
    <gap:splash gap:platform="ios" src="res/splash/ios/Default_at_2x.png"   />
    <gap:splash gap:platform="ios" src="res/splash/ios/Default_iphone5.png"   />
    <gap:splash gap:platform="ios" src="res/splash/ios/Default_iphone6.png"   />
    <gap:splash gap:platform="ios" src="res/splash/ios/Default_iphone6_at3x.png"   /> 

    <access origin="*" />
    <allow-navigation href="*" />
    <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">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>

    <preference name="android-build-tool" value="gradle" />

    <plugin source="npm" name="cordova-plugin-camera" spec="2.2.0" />

    <plugin source="npm" name="cordova-plugin-whitelist" spec="1.2.1" />
    <plugin source="npm" name="cordova-plugin-device" spec="1.1.1" />

    <plugin source="npm" name="cordova-plugin-file" spec="3.0.0" />
    <plugin source="npm" name="cordova-plugin-file-transfer" spec="1.3.0" />
    <plugin source="npm" name="cordova-plugin-network-information" spec="1.0.1" />

    <plugin source="npm" name="cordova-plugin-splashscreen" spec="2.1.0" />
    <plugin source="npm" name="cordova-plugin-statusbar" spec="2.1.1" />
    <plugin source="npm" name="cordova-plugin-geolocation" spec="2.1.0" />

    <plugin name="https://github.com/ohh2ahh/AppAvailability.git#v0.3.1" />
    <plugin name="https://github.com/interFace-dk/phonegap-googlenavigate.git" />
    <plugin name="https://github.com/kdileep1990/com.dileep.plugins.datepicker.git#0.0.1" />
    <plugin name="https://github.com/cmackay/google-analytics-plugin.git#v1.0.2" />

    <preference name="cordova-background-geolocation-license" value=„123“ />
    <plugin name="background-geolocation" spec="1.7.3" source="pgb" />
      <plugin name="https://github.com/katzer/cordova-plugin-app-event.git#1.2.0" />
      <plugin name="https://github.com/cliqueApp/cordova-plugin-local-notifications.git#master" />

    <plugin source="npm" name="phonegap-plugin-push" spec="1.7.2">
        <param name="SENDER_ID" value=„123“ />
    </plugin>

</widget>

我怀疑,我使用新 CLI 版本调用 NSLocation 的方式有问题。 版本更改为 6.5.0 会引起任何其他重要变化吗?任何提示将不胜感激。

【问题讨论】:

【参考方案1】:

我找到了解决问题的方法here。长话短说,这就是我解决这个问题的方法: - config.xml(改了版本号,我用的是旧的):

<plugin name="cordova-plugin-geolocation" spec="2.4.3" />
index.html(添加了这一行):

&lt;meta http-equiv="Content-Security-Policy" content="frame-src * gap://ready; default-src 'self' gap://ready file://* *; connect-src * blob: data:; style-src * 'unsafe-inline'; script-src * 'unsafe-eval' 'unsafe-inline'; img-src data: *" /&gt;

玩得开心。

【讨论】:

以上是关于Phonegap:CLI 升级到 6.5.0 后的 iOS 错误的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap - 使用 Eclipse 升级到 3.0?

PhoneGap config.xml - 添加插件不起作用

cordova - 启动画面和应用程序屏幕在 Phonegap Build cli-6.1.0 上不起作用

升级到 Xcode 12.5 后的 xcodebuild 问题

升级到 vue-cli 3 后,HTML 中的空格消失了

如何通过CLI将iOS插件添加到Phonegap?