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 日,我根据 Adobe 构建云服务的新指南将工作的 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(添加了这一行):
<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: *" />
玩得开心。
【讨论】:
以上是关于Phonegap:CLI 升级到 6.5.0 后的 iOS 错误的主要内容,如果未能解决你的问题,请参考以下文章
Phonegap - 使用 Eclipse 升级到 3.0?
PhoneGap config.xml - 添加插件不起作用
cordova - 启动画面和应用程序屏幕在 Phonegap Build cli-6.1.0 上不起作用