App Store Connect warning: UIWebView API deprecation

We will try Capacitor at some point, but this will require significant work. Some of the most important features rely heavily on plugins and Cordova specifics not available in Capacitor. That’s why fixing Cordova is important for some apps that have been developed and grown into Cordova for some years.

So what’s the point now in 2020?

It is really problem Ionic. I hope ionic team will fix this problem.

This is not a problem Ionic an magically solve for you. You need to take action and try Capacitor or use the fixed versions of Cordova.

I know. I meant fixed versions of Cordova.

The latest version of cordova-ios has fix for this. You need to update cordova-ios and set <preference name="WKWebViewOnly" value="true" />. Maybe some of your plugins need updates too.

Is there anyone that tried this setting and uploaded to AppStore?

Yes. I just got the warning yesterday. I added this setting, update two plugins which used UIWebView to a new version that work with this setting and the warning was gone at the next upload.

@NiklasMerz Do you have any apps that use the Cordova Code Push plugin? I don’t believe this has been resolved with the WkWebViewOnly fix and I’d be keen to hear your input. Thanks.

I never used that plugin and have not heard something about that.

Hello, do you know what is the proper way to configure a cordova plugin from capacitor? I can’t find many examples online. Would “cordova”: { “preferences”: { “WKWebViewOnly”: “true” } } work or I have to configure each plugin seperately? Thanks.

Same issue, even I have updated all cordova plugins and upgrade the iOS platform to cordova-ios 5.1.1

updated plugins list

call-number 0.0.2 “Cordova Call Number Plugin”
cordova-android-play-services-gradle-release 4.0.0 “cordova-android-play-services-gradle-release”
cordova-plugin-app-version 0.1.9 “AppVersion”
cordova-plugin-background-mode 0.7.3 “BackgroundMode”
cordova-plugin-badge 0.8.8 “Badge”
cordova-plugin-camera 4.1.0 “Camera”
cordova-plugin-device 2.0.3 “Device”
cordova-plugin-email-composer 0.9.2 “EmailComposer”
cordova-plugin-file 6.0.2 “File”
cordova-plugin-file-opener2 2.2.1 “File Opener2”
cordova-plugin-file-transfer 1.7.1 “File Transfer”
cordova-plugin-firebase 2.0.5 “Google Firebase Plugin”
cordova-plugin-globalization 1.11.0 “Globalization”
cordova-plugin-inappbrowser 3.2.0 “InAppBrowser”
cordova-plugin-ionic 5.4.6 “cordova-plugin-ionic”
cordova-plugin-ionic-keyboard 2.1.3 “cordova-plugin-ionic-keyboard”
cordova-plugin-ionic-webview 4.1.3 “cordova-plugin-ionic-webview”
cordova-plugin-local-notification 0.9.0-beta.2 “LocalNotification”
cordova-plugin-mauron85-background-geolocation 3.0.3 “CDVBackgroundGeolocation”
cordova-plugin-network-information 2.0.2 “Network Information”
cordova-plugin-safariviewcontroller 1.6.0 “SafariViewController”
cordova-plugin-splashscreen 5.0.3 “Splashscreen”
cordova-plugin-statusbar 2.4.3 “StatusBar”
cordova-plugin-touch-id 3.3.1 “Touch ID”
cordova-plugin-whitelist 1.3.4 “Whitelist”
cordova-sqlite-storage 3.4.1 “Cordova sqlite storage plugin - cordova-sqlite-storage plugin version”

config.xml

    <access origin="http://localhost:8080/*" />
    <allow-navigation href="http://localhost:8080/*" />
    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
    <preference name="WKWebViewOnly" value="true" />

I know as Ionic team said it will resolve by cordova-ios 6.0.0. But here my question is, why it’s not resolved as they mentioned 5.1.0 resolved in compile time? I have missed anything in this up-gradation process.

anyone can help me to resolve this issue in some other alternative way.

Hi,

As mentioned here https://ionicframework.com/blog/understanding-itms-90809-uiwebview-api-deprecation, I have updated cordova-ios to 5.1.1 latest version and updated all my Cordova plugins. Still, I got the same warning message from the Apple side. Do you have any idea or I have missed anything to update or which plugin throws that deprecation message?

updated plugins list

call-number 0.0.2 “Cordova Call Number Plugin”
cordova-android-play-services-gradle-release 4.0.0 “cordova-android-play-services-gradle-release”
cordova-plugin-app-version 0.1.9 “AppVersion”
cordova-plugin-background-mode 0.7.3 “BackgroundMode”
cordova-plugin-badge 0.8.8 “Badge”
cordova-plugin-camera 4.1.0 “Camera”
cordova-plugin-device 2.0.3 “Device”
cordova-plugin-email-composer 0.9.2 “EmailComposer”
cordova-plugin-file 6.0.2 “File”
cordova-plugin-file-opener2 2.2.1 “File Opener2”
cordova-plugin-file-transfer 1.7.1 “File Transfer”
cordova-plugin-firebase 2.0.5 “Google Firebase Plugin”
cordova-plugin-globalization 1.11.0 “Globalization”
cordova-plugin-inappbrowser 3.2.0 “InAppBrowser”
cordova-plugin-ionic 5.4.6 “cordova-plugin-ionic”
cordova-plugin-ionic-keyboard 2.1.3 “cordova-plugin-ionic-keyboard”
cordova-plugin-ionic-webview 4.1.3 “cordova-plugin-ionic-webview”
cordova-plugin-local-notification 0.9.0-beta.2 “LocalNotification”
cordova-plugin-mauron85-background-geolocation 3.0.3 “CDVBackgroundGeolocation”
cordova-plugin-network-information 2.0.2 “Network Information”
cordova-plugin-safariviewcontroller 1.6.0 “SafariViewController”
cordova-plugin-splashscreen 5.0.3 “Splashscreen”
cordova-plugin-statusbar 2.4.3 “StatusBar”
cordova-plugin-touch-id 3.3.1 “Touch ID”
cordova-plugin-whitelist 1.3.4 “Whitelist”
cordova-sqlite-storage 3.4.1 “Cordova sqlite storage plugin - cordova-sqlite-storage plugin version”

config.xml

    <access origin="http://localhost:8080/*" />
    <allow-navigation href="http://localhost:8080/*" />
    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
    <preference name="WKWebViewOnly" value="true" />

Ionic Info:

Ionic:

Ionic CLI : 6.3.0 (/usr/local/lib/node_modules/@ionic/cli)
Ionic Framework : @ionic/angular 4.11.4
@angular-devkit/build-angular : 0.803.21
@angular-devkit/schematics : 8.3.0
@angular/cli : 8.3.0
@ionic/angular-toolkit : 2.0.0

Cordova:

Cordova CLI : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : android 8.1.0, ios 5.1.0
Cordova Plugins : cordova-plugin-ionic 5.4.6, cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.1.3, (and 20 other plugins)

Utility:

cordova-res (update available: 0.11.0) : 0.6.0
native-run (update available: 0.3.0) : 0.2.8

System:

Android SDK Tools : 26.1.1 (/Users/sys-user/Library/Android/sdk)
ios-deploy : 1.9.4
ios-sim : 8.0.2
NodeJS : v10.16.1 (/usr/local/bin/node)
npm : 6.9.0
OS : macOS Catalina
Xcode : Xcode 11.2.1 Build version 11B500

I migrated to wkwebview as mentioned here https://ionicframework.com/blog/understanding-itms-90809-uiwebview-api-deprecation and i have updated cordova-ios to 5.1.1 I got the same warning message from the Apple side. Do you have any idea or I have missed anything to update or which plugin throws that deprecation message

plugin name=“mx.ferreyra.callnumber” spec=“0.0.2
plugin name=“cordova-plugin-file” spec=”^6.0.1" />
plugin name=“cordova-plugin-x-socialsharing” spec="^5.6.4"
plugin name=“cordova-plugin-whitelist” spec="^1.3.3"
plugin name=“cordova-plugin-device” spec="^2.0.2"
plugin name=“cordova-plugin-advanced-http” spec="^1.11.1"
plugin name=“cordova-plugin-inappbrowser” spec="^3.2.0"
plugin name=“cordova-sqlite-storage” spec="^2.3.2"
plugin name=“cordova-plugin-network-information” spec="^2.0.1"
plugin name=“cordova-plugin-ionic-keyboard” spec="^2.1.2"
plugin name=“cordova-plugin-ionic-webview” spec="^4.1.3"
plugin name=“cordova-plugin-camera” spec="^4.0.3"
plugin name=“cordova-plugin-filechooser” spec="^1.0.1"
plugin name=“cordova-plugin-geolocation” spec="^4.0.1"
plugin name=“cordova-plugin-statusbar” spec="^2.4.2"
plugin name=“cordova-plugin-splashscreen” spec="^5.0.3"
plugin name=“pushwoosh-cordova-plugin” spec=“7.12.1”

plugin name="cordova-plugin-googlemaps" spec="^2.6.2"

plugin name="cordova-plugin-enable-multidex" spec="^0.2.0" 
plugin name="cordova-plugin-androidx" spec="^1.0.2" 
plugin name="cordova-plugin-androidx-adapter" spec="^1.1.0" 
plugin name="cordova-android-play-services-gradle-release" spec="^4.0.0" 

I also added
preference name=“WKWebViewOnly” value=“true”

I need help Please

Hi,

Can you try by removing firebase plugin or you can update to latest version. We also faced same issue and resolved.

I had same issue, resolved with these steps

  1. Uninstall InAppBrowser plugin and install cordova-plugin-inappbrowser@3.2.0
ionic cordova plugin rm cordova-plugin-inappbrowser

ionic cordova plugin add cordova-plugin-inappbrowser@3.2.0
  1. Uninstall webview pulgin and install cordova plugin add cordova-plugin-wkwebview-engine
ionic cordova plugin rm cordova-plugin-ionic-webview

ionic cordova plugin add cordova-plugin-wkwebview-engine
  1. After that add these 3
  • Add preference attribute CordovaWebViewEngine to the config.xml .
  • Add feature attribute CDVWKWebViewEngine to the config.xml .
  • Add preference WKWebViewOnly to the config.xml .
<platform name="ios">
    <preference name="WKWebViewOnly" value="true" />

    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>

    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
</platform>

then build and upload.

(Before do this take a copy of your original project directory)

Are you using cordova-plugin-firebasex ? Which version of this plugin and cordova are you using ?

Hi

I have installed cordova-ios@5.1.1 and using plugins which may have some UIWebView references such as google-plus, facebook4 and social sharing. I have removed what I don’t need from them.
Also I’ve added the right configuration to config.xml but still failed to successfully upload to App Store. They keep rejecting my first app and now my build number is 1.0.21 !!! 21 Tries I’ve made but still failing.

please share your config.xml and/or package.json. Review the updated blog post - we recently added a list of plugins that can trigger the rejection and mitigation steps.

@netkow Hi

I have opened many issues through plugins which maybe the cause of rejecting my app. There is no problem with my code. The problem is that there are some plugins that are still using the UIWebView OR maybe the version I am targeting when I am using them, because I am using Ionic 3.

I gave up and decided to use Ionic 5 with Capacitor and totally refactor my code. UNFORTUNATELY