Cordova UIWebView APIs Deprecated API Usage - ios

I am kind of confused because I am still getting the ITMS-90809: Deprecated API Usage warning when I uploaded on the App Store. I have already upgraded my cordova-ios platform to version 5.1.1 as well as my the InAppBrowser to version 3.2.0
Here are my plugin list:
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-file 6.0.1 "File"
cordova-plugin-inappbrowser 3.2.0 "InAppBrowser"
cordova-plugin-keyboard 1.2.0 "Keyboard"
cordova-plugin-screen-orientation 3.0.1 "Screen Orientation"
cordova-plugin-statusbar 2.4.3-dev "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-plugin-wkwebview-engine 1.1.4 "Cordova WKWebView Engine"
cordova.plugins.diagnostic 5.0.1 "Diagnostic"
And I have added WKWebViewOnly in the config.xml. Here is the config.xml for ios
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<icon height="57" src="res/icon/ios/icon-57.png" width="57" />
<icon height="114" src="res/icon/ios/icon-57-2x.png" width="114" />
<icon height="57" src="res/icon/ios/icon-72.png" width="57" />
<icon height="144" src="res/icon/ios/icon-72-2x.png" width="144" />
<icon height="1024" src="res/icon/ios/Icon-1024.png" width="1024" />
<preference name="Orientation" value="portrait" />
<preference name="KeyboardShrinksView" value="false" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine" />
<preference name="WKWebViewOnly" value="true" />
</platform>
I am not sure what I've got wrong.

Can you check in your xcode console what is loading WkWebwiew or UIWebview.

2 Things here,
Did you upgrade to WKWebView by using
ionic cordova plugin add cordova-plugin-ionic-webview --save
CordovaWebViewEngine should have the value CDVWKWebViewEngine

The issue is with the inappbrowser plugin you may need to update it to the latest.

Related

Cordova inappbrowser not working when build in xcode

Since 30th of april Apple does not allow apps build with SDK lower than 13. Ive used to build my apps using Phonegap build (https://build.phonegap.com/) but it uses SDK 12. Now im trying to build my apps using Xcode.
Every build i do using Phonegap build and using a test distribution profile to install this build on my phone works like a charm but when i build the app using the same config.xml as i use for my Phonegap build the inappbrowser is not working anymore.
I think it has something to do with the UIWebView being depricated as of SKD 13. Therefor ive used the tutorials provided by Cordova to implement the WkWebview.
I've tried removing all plugins except wkwebview-engine and inappbrowser but this has no effect.
Cordova CLI 9.0.0
inappbrowser 3.2.0
wkwebview-engine 1.2.1
ios platform add 5.1.1
My 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>
before testing i do this to make sure all plugins are installed fresh:
rm -rf package-lock.json package.json platforms plugins/* node_modules
cordova platform add ios#5.1.1
i receive no response in the xcode console just this information when build is finished:
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
I'm out of ideas to fix this. maybe anyone has some fresh look so i can try some new things.
Well managed to find the answer. My file structure was www/dist/index.html and in there was the link to cordova.js
<script type="text/javascript" src="cordova.js"></script>
it needed to be:
<script type="text/javascript" src="../cordova.js"></script>
besides that, during the command:
cordova platform add ios#5.1.1
there were some yellow messages for example:
Failed to install 'cordova-plugin-inappbrowser': Error: Cannot find module 'glob'
I was ignoring them because well... yellow
after some research i came across the solution for this. after the messages execute:
cordova platform rm ios
And then again:
cordova platform add ios#5.1.1
the second time the plugins are installed successfully and this time the inappbrowser works again.
for now this is a workaraound, the question im still having is why i get the Failed to install 'cordova-plugin-inappbrowser': Error: Cannot find module 'glob'messages when adding the platform for the first time..?

Ionic 3 build --prod causes white screen on iOS only

Hi i'm trying to compile my Ionic 3 app to iOS and it does not seams to be working.
The compilation works fine, however, when i'm trying to test the app using an iOS emulator, I got a white screen.
There is no error in the console, nor in the XCode error log.
I know the code is Ok since it's working perfeclty on android and browser.
I have tried to remove and reinstall the iOS platform, to remove and reisntall the node_module folder with no success.
My guess is, that the code isn't even loaded since when i'm trying to inspect the emulator using Safari Developer tool, the title of the page is index.html rather than the title i've set on the login page.
Here are the relevents files :
My config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.mycompany.myAwesomeApp" version="3.0.2" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>my awesome app</name>
<description>My awesome app description</description>
<author email="support#myCompany.com" href="https://myCompany.com">My company dev team</author>
<content src="index.html" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="android-minSdkVersion" value="19" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<preference name="loadUrlTimeoutValue" value="60000" />
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
<platform name="android">
<!-- irrelevent android icons -->
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<!-- irrelevent icon files -- >
</platform>
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<plugin name="phonegap-plugin-push" spec="~2.2.2" />
<plugin name="cordova-plugin-console" spec="^1.1.0" />
<plugin name="cordova-plugin-device" spec="^1.1.7" />
<plugin name="cordova-plugin-splashscreen" spec="^4.1.0" />
<plugin name="cordova-plugin-statusbar" spec="^2.4.1" />
<plugin name="cordova-plugin-camera" spec="^4.0.2" />
<plugin name="cordova-plugin-geolocation" spec="^4.0.1" />
<plugin name="cordova-plugin-inappbrowser" spec="^2.0.2" />
<plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
<plugin name="cordova-plugin-x-socialsharing" spec="^5.3.2" />
<plugin name="cordova-plugin-headercolor" spec="^1.0.0" />
<plugin name="cordova-plugin-network-information" spec="^2.0.1" />
<plugin name="cordova-plugin-file" spec="^6.0.1" />
<plugin name="cordova-plugin-advanced-http" spec="2.0.4" />
<plugin name="cordova-plugin-ionic-webview" spec="^4.0.1">
<variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="27.+" />
</plugin>
<plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
<engine name="android" spec="7.1.4" />
<engine name="browser" spec="5.0.1" />
<engine name="ios" spec="4.5.5" />
Ionic Info :
Ionic:
ionic (Ionic CLI) : 4.12.0 (/Users/nic/.nvm/versions/node/v10.15.3/lib/node_modules/ionic)
Ionic Framework : ionic-angular 3.9.0
#ionic/app-scripts : 3.1.4
Cordova:
cordova (Cordova CLI) : 9.0.0 (cordova-lib#9.0.1)
Cordova Platforms : android 7.1.4, ios 4.5.5
Cordova Plugins : cordova-plugin-ionic-webview 1.2.1, (and 16 other plugins)
System:
NodeJS : v10.15.3 (/Users/nic/.nvm/versions/node/v10.15.3/bin/node)
npm : 6.4.1
OS : macOS High Sierra
Xcode : Xcode 10.0 Build version 10A255
I ended up finding my problem. I was loading code in the constructor rather than in an ionViewDidLoad function. I have no idea why this works on Android, but not on iOS.

ionic cordova run ios - Export failed with code 65

I'm done with research on this error. I get following error when trying to run ionic cordova run ios --livereload:
[cordova] Non-system Ruby in use. This may cause packaging to fail.
[cordova] If you use RVM, please run `rvm use system`.
[cordova] If you use chruby, please run `chruby system`.
[cordova] error: archive not found at path '/Users/yassinezeriouh/Desktop/doday2/platforms/ios/DoDay.xcarchive'
[cordova] ** EXPORT FAILED **
[cordova]
[cordova] CordovaError: Promise rejected with non-error: 'Error code 65 for command: xcodebuild with args: -exportArchive,-archivePath,DoDay.xcarchive,-exportOptionsPlist,/Users/yassinezeriouh/Desktop/doday2/platforms/ios/exportOptions.plist,-exportPath,/Users/yassinezeriouh/Desktop/doday2/platforms/ios/build/device,-allowProvisioningUpdates'
re-installed ios
downgraded ios
all signing is correct in xcode
tried with custom build.json
re-installed all plugins
Running the project in xcode on my device works perfectly, tried to fix this issue since 4 hours, hope you can help.
I'm running iOS 12, using Xcode 10.1, cordova 8.1.2, ionic 4.40 (project is actually running on ionic v3 and was created last month)
My config.xml (except android & ios splash/icon section):
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.zeriouh.censored" version="1.3" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Censored</name>
<description>Censored</description>
<author email="cen#so.red" href="http://ce.nsor.ed/">Yassine Zeriouh</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="android-minSdkVersion" value="19" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="false" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="100" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="android" spec="6.3.0" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
<plugin name="cordova-plugin-statusbar" spec="^2.4.2" />
<plugin name="cordova-plugin-device" spec="^2.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="^5.0.2" />
<plugin name="cordova-plugin-ionic-webview" spec="^2.2.0">
<variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="27.+" />
</plugin>
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.1.3" />
<plugin name="cordova-plugin-inapppurchase" spec="~1.2.0" />
<plugin name="com.omarben.inappreview" spec="~0.0.6" />
<plugin name="cordova-plugin-admob-free" spec="~0.22.0" />
<plugin name="cordova-plugin-email-composer" spec="~0.8.15" />
<plugin name="cordova-plugin-local-notification" spec="~0.9.0-beta.2" />
<plugin name="cordova-plugin-badge" spec="~0.8.7" />
<plugin name="cordova-plugin-apprate" spec="~1.4.0" />
<engine name="ios" spec="~4.5.5" />
</widget>
try this beacuse the xcode 10.1 build in a diferent way to the ionic 3 now
ionic cordova run ios -- --buildFlag="-UseModernBuildSystem=0" --livereload
There is an issue with "cordova-ios": "4.5.5".
Try following below steps.
ionic cordova platform rm ios
npm uninstall cordova-ios
npm install cordova-ios#4.4.0
ionic cordova platform add ios#4.4.0
ionic cordova run ios --livereload
For me it worked after changing my cordova-ios version from 4.5.5 to 4.4.0.
in package.json I changed "cordova-ios": "4.5.5" to "cordova-ios": "4.4.0"
in config.xml I changed <engine name="ios" spec="4.5.5" /> to <engine name="ios" spec="4.4.0" />
rm -rf node_modules/ platforms/ios/
npm i
ionic cordova build ios
I have the same problem when I'm building for ios with "prod" tag.
I have:
MacOS catalina 10.5.4
Xcode version 12.2
cordova-ios 6.0.0
For me the solution that worked was first sign the app on xcode after the first build issue (open platform/ios with xcode and sign the app). Then I build with the commands that people suggest here, but I have to add the "--device" tag also. After that work good :)
ionic cordova run ios --prod --release --buildFlag="-UseModernBuildSystem=0" --device

Cordova Ionic project with Firebase Messaging and Firebase Dynamic Links

In the app that we're building, we need Firebase Dynamic Link, because the Sign Up is with Firebase email link login. This login will send an email to the provided email address, that when clicked, will open the app with a dynamic link. To keep our users engaged, we also like to send Push Notifications. I can get both of them to work together on Android when I use the versions by chemerisuk on GitHub. I even get an iOS build, but I get stuck on getting a token on iOS. Getting this error message:
Failed to fetch default token Error Domain=com.firebase.iid Code=1003 "(null)"
I've double checked my Firebase Project settings (bundle id, app id prefix, cloud messaging sender id, cloud messaging apn key) and my Apple settings (certificates, provisioning profiles, keys and identifiers). I've tried it on Simulators and Real Devices. I've tried Development builds, App Store Archives and Ad Hoc Archives.
Unfortunately, Dynamic Links isn't included in the Cordova Firebase plugin. When I try to add a different fcm plugin, it includes the complete Firebase Core, which conflicts with Dynamic Links.
I feel like I'm really close, who has any experience with this combination of plugins and got it working on iOS?
This is my environment:
Ionic:
ionic (Ionic CLI) : 4.0.2 (/usr/local/lib/node_modules/ionic)
Ionic Framework : ionic-angular 3.9.2
#ionic/app-scripts : 3.1.8
Cordova:
cordova (Cordova CLI) : 8.0.0
Cordova Platforms : android 7.0.0, ios 4.5.5
System:
Android SDK Tools : 26.1.1
ios-deploy : 1.9.2
ios-sim : 6.1.2
NodeJS : v8.11.3 (/usr/local/bin/node)
npm : 5.6.0
OS : macOS High Sierra
Xcode : Xcode 9.4.1 Build version 9F2000
Environment:
ANDROID_HOME : /Users/user/Library/Android/sdk/
My (relevant) Cordova config.xml:
<?xml version='1.0' encoding='utf-8'?>
<widget android-packageName="com.example.android" android-versionCode="10001" id="com.example.app" ios-CFBundleIdentifier="com.example.ios" ios-CFBundleVersion="1.0.1" version="1.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Example</name>
<description>Some description</description>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="BackgroundColor" value="0xff168aa5" />
<preference name="android-minSdkVersion" value="16" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="Orientation" value="portrait" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<platform name="android">
<resource-file src="google-services.json" target="app/google-services.json" />
<allow-intent href="market:*" />
<icon />
<splash />
</platform>
<platform name="ios">
<resource-file src="GoogleService-Info.plist" />
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<icon />
<splash />
</platform>
<plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
<plugin name="cordova-plugin-device" spec="^2.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="^5.0.2" />
<plugin name="cordova-plugin-ionic-webview" spec="^1.2.1" />
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.1.2" />
<plugin name="cordova-plugin-x-socialsharing" spec="^5.4.1" />
<plugin name="cordova-plugin-qrscanner" spec="^2.6.0" />
<allow-navigation href="http://192.168.178.19:8101" />
<plugin name="cordova-plugin-firebase-dynamiclinks" spec="^1.0.0">
<variable name="APP_DOMAIN" value="example.com" />
<variable name="PAGE_LINK_DOMAIN" value="ab123.app.goo.gl" />
<variable name="FIREBASE_DYNAMIC_LINKS_VERSION" value="+" />
</plugin>
<plugin name="cordova-plugin-firebase-messaging" spec="^1.1.0">
<variable name="FIREBASE_MESSAGING_VERSION" value="17.1.+" />
<variable name="ANDROID_SUPPORT_VERSION" value="27.+" />
</plugin>
<engine name="android" spec="7.0.0" />
<engine name="ios" spec="4.5.5" />
</widget>
Because I was using only parts of the Firebase library, I didn't include Firebase Analytics, because I wasn't using it. Apparently, it's necessary for the functioning of the rest of the plugins. So installing cordova-plugin-firebase-analytics was the fix for me.
For some, it was making sure that they had the correct Firebase project settings. Go to Firebase > Cloud messaging > iOS app configuration and make sure you've uploaded a valid APNs Authentication Key or APNs Certificates.
Hope this helps other people who want to use both Firebase Messaging AND Firebase Dynamic Links!

Ionic can't find platform

What is wrong with my config files (OR ionic cordova setup); it can't find any platforms but I do have ios installed already, PLUS ionic tries to add and fails because it exists... The example below is from emulate, the same errors are generated by $ionic cordova platform add ios as well.
$ ionic cordova emulate ios
> cordova platform add ios --save
✖ Running command - failed!
[WARN] Platform already added. Saving platforms to config.xml.
> cordova platform save
✔ Running command - done!
[INFO] Running app-scripts build: --platform ios --target cordova
[22:44:34] build dev started ...
[22:44:34] clean started ...
[22:44:34] clean finished in 11 ms
[22:44:34] copy started ...
[22:44:34] transpile started ...
[22:44:38] transpile finished in 4.45 s
[22:44:38] preprocess started ...
[22:44:38] deeplinks started ...
[22:44:39] deeplinks finished in 264 ms
[22:44:39] preprocess finished in 265 ms
[22:44:39] webpack started ...
[22:44:39] copy finished in 4.89 s
[22:44:50] webpack finished in 11.63 s
[22:44:50] sass started ...
[22:44:51] sass finished in 1.04 s
[22:44:51] postprocess started ...
[22:44:51] removed unused font files
[22:44:51] postprocess finished in 10 ms
[22:44:51] lint started ...
[22:44:51] build dev finished in 17.47 s
> ionic cordova prepare
[WARN] No Cordova platforms listed in config.xml. Nothing to prepare.
You can save your installed platforms to config.xml with the ionic cordova platform save command.
[22:44:53] lint finished in 2.11 s
And this is my config.xml file:
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.nkt.pms" version="2.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Sys</name>
<description>System</description>
<author email="support#XXXX.net" href="http://XXXX">The XXXX Team</author>
<content src="index.html" />
<access origin="*" />
<allow-navigation href="http://ionic.local/*" />
<allow-navigation href="http://XXXX:8100" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="AndroidLaunchMode" value="singleTask" />
<preference name="webviewbounce" value="false" />
<preference name="UIWebViewBounce" value="false" />
<preference name="DisallowOverscroll" value="true" />
<preference name="android-minSdkVersion" value="16" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<preference name="orientation" value="portrait" />
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
<icon height="114" src="resources/ios/icon/icon#2x.png" width="114" />
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
<icon height="80" src="resources/ios/icon/icon-40#2x.png" width="80" />
<icon height="120" src="resources/ios/icon/icon-40#3x.png" width="120" />
<icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
<icon height="100" src="resources/ios/icon/icon-50#2x.png" width="100" />
<icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
<icon height="120" src="resources/ios/icon/icon-60#2x.png" width="120" />
<icon height="180" src="resources/ios/icon/icon-60#3x.png" width="180" />
<icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
<icon height="144" src="resources/ios/icon/icon-72#2x.png" width="144" />
<icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
<icon height="152" src="resources/ios/icon/icon-76#2x.png" width="152" />
<icon height="167" src="resources/ios/icon/icon-83.5#2x.png" width="167" />
<icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
<icon height="58" src="resources/ios/icon/icon-small#2x.png" width="58" />
<icon height="87" src="resources/ios/icon/icon-small#3x.png" width="87" />
<splash height="1136" src="resources/ios/splash/Default-568h#2x~iphone.png" width="640" />
<splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
<splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
<splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
<splash height="1536" src="resources/ios/splash/Default-Landscape#2x~ipad.png" width="2048" />
<splash height="2048" src="resources/ios/splash/Default-Landscape#~ipadpro.png" width="2732" />
<splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
<splash height="2048" src="resources/ios/splash/Default-Portrait#2x~ipad.png" width="1536" />
<splash height="2732" src="resources/ios/splash/Default-Portrait#~ipadpro.png" width="2048" />
<splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
<splash height="960" src="resources/ios/splash/Default#2x~iphone.png" width="640" />
<splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
</platform>
<feature name="StatusBar">
<param name="ios-package" onload="true" value="CDVStatusBar" />
</feature>
<icon src="resources/newicon.png" />
<icon src="resources/android/icon/drawable-xhdpi-icon.png" />
<plugin name="cordova-plugin-camera" spec="~2.4.1">
<variable name="CAMERA_USAGE_DESCRIPTION" value=" " />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value=" " />
</plugin>
<plugin name="cordova-plugin-console" spec="^1.1.0" />
<plugin name="cordova-plugin-customurlscheme" spec="^4.3.0">
<variable name="URL_SCHEME" value="com.nkt.pms" />
<variable name="ANDROID_SCHEME" value="com.nkt.pms" />
<variable name="ANDROID_HOST" value="pmsys.eu.auth0.com" />
<variable name="ANDROID_PATHPREFIX" value="/cordova/com.nkt.pms/callback" />
</plugin>
<plugin name="cordova-plugin-device" spec="^1.1.6" />
<plugin name="cordova-plugin-file" spec="~4.3.3" />
<plugin name="cordova-plugin-file-transfer" spec="~1.6.3" />
<plugin name="cordova-plugin-filepath" spec="~1.0.2" />
<plugin name="cordova-plugin-safariviewcontroller" spec="^1.4.7" />
<plugin name="cordova-plugin-splashscreen" spec="^4.0.3" />
<plugin name="cordova-plugin-statusbar" spec="^2.2.3" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
<plugin name="cordova-sqlite-storage" spec="^2.0.4" />
<plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
$ ionic info
cli packages: (/Users/larsbrenna/Desktop/dev/app/node_modules)
#ionic/cli-utils : 1.9.2
ionic (Ionic CLI) : 3.9.2
global packages:
Cordova CLI : 7.0.1
local packages:
#ionic/app-scripts : 2.1.4
Cordova Platforms : ios
Ionic Framework : ionic-angular 3.7.1
System:
Node : v6.9.1
npm : 5.4.2
OS : macOS Sierra
Xcode : Xcode 9.0 Build version 9A235
Any and all tips and hints appreciated!!
Ionic can't find the platform because the <engine> tag is missing in config.xml. Try cleaning up your setup a bit:
Run cordova platform rm ios (you may get an error that the platform is not added)
Remove the platforms folder if it still exists
Maybe also remove the plugins folder if you want them reinstalled
Remove all references related to the ios platform in package.json
Delete node_modules and package-lock.json
Then make sure cordova and ionic CLIs are up to date:
(sudo) npm install -g cordova#latest ionic#latest
Then restore everything step by step:
npm install
cordova platform add ios#4.5.1
I personally like to run the cordova commands just through the cordova CLI not via the ionic CLI (when running ionic cordova ... the ionic CLI just forwards cordova related commands to the cordova CLI, which can lead to errors). Just for building and running the app I use the combined commands because its more convenient.
I also noticed that you are using an old version of #ionic/app-scripts with the newest ionic-angular version. You should upgrade this too.

Resources