[Workaround Found] ITMS-90809: Deprecated API Usage

This is a Cordova issue. You probably manually built the iOS App with it. Try to update Cordova to at least version 6.0.0 , and use the cordova ios prepare command.

EDIT:
What I meant is update cordoave IOS to 6.0.0 but this release have not came out yet. So:

  • Make sure you have the latest cordova-ios
  • Add this to your 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>
  • Use the cordova ios prepare command

@arthuro555 I think you’re missing a step:

Add plugin cordova-plugin-wkwebview-engine , preferably the latest version 1.2.1.

In other words:

  1. run: cordova plugin add cordova-plugin-wkwebview-engine
  2. and add in your 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 you can probably run again cordova ios build.

Let us know if this works. Thanks! :slight_smile:

I tried the following:
cordova create “AppName”
Export 'IOS & Android (manual) from Gdevelop
cd “AppName”
cordova platform add ios
cordova plugin add cordova-plugin-wkwebview-engine
modified config.xml

<platform name="ios">
    <allow-intent href="itms:*" />
    <allow-intent href="itms-apps:*" />
    <preference name="WKWebViewOnly" value="true" />
    <feature name="CDVWKWebViewEngine">
       <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />

cordova build ios
opened xcode configured for zapchase company team and automatic signing
archived and submitted to app store

And App Store responds with:

ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted.

I search in xcode and I see UIWebView in projects still.

here is what package.json dependencies info:
“cordova-ios”: “^5.1.1”,
“cordova-plugin-wkwebview-engine”: “^1.2.1”,

Please correct me if any steps were wrong above.

This looks correct to me - I’m not sure why the error would still appear. @arthuro555 do you have an idea?

No I don’t sorry. Well UIWebView should still be present in the code until cordova-ios 6.0.0 so maybe it is currently impossible to publish new cordova apps on ios?

Thank you for responding. I will be patient and wait for update to cordova-ios and let you know on this thread if it work for us.

Hi Guys,

I have the same issue, do you have more news about it?

I have been trying these last days with the latest versions of cordova, but still don’t work, and when I add the code lines that you mention here, my application does not start, just a black screen appear.

Thanks

Hi Guys,

I just tested the latest version of cordova, and my application continues to open a black screen only.
I would appreciate some kind of help here :slight_smile:

Thanks

Any updates on this? When I do WKWebViewOnly I get black screen at launch and can’t play my game. Is this a problem with cordova or Gdevelop? App store doesn’t accept UIWeb :frowning:

Little update: the new version of Cordova IOS ist out and this has been published: How To Use 'WKWebViewOnly' - Apache Cordova

Sorry for being late!

Without a specific error we can’t know what is wrong. Try to see if you can debug the webview and search for errors.

Little update:

Since cordova-ios 6 we don’t need cordova-plugin-wkwebview-engine,
because everything is build in cordova-ios core.

I tried to build platformer example.
I modified config.xml and made all necessary steps.
Then I opened xcode project file and run on emulator.
App was build without errors and warnings.

I had a white screen on the emulator for a second,
then black and nothing else.

I think the problem is:

2020-08-28 00:35:41.696029+0200 Platformer[4488:386478] Could not load the “LaunchStoryboard” image referenced from a nib in the bundle with identifier “com.example.platformer”\

Any ideas ?

My output:
2020-08-28 00:35:41.645417+0200 Platformer[4488:386478] Apache Cordova native platform version 6.1.0 is starting.
2020-08-28 00:35:41.645650+0200 Platformer[4488:386478] Multi-tasking → Device: YES, App: YES
2020-08-28 00:35:41.696029+0200 Platformer[4488:386478] Could not load the “LaunchStoryboard” image referenced from a nib in the bundle with identifier “com.example.platformer”
2020-08-28 00:35:41.905611+0200 Platformer[4488:386478] WF: === Starting WebFilter logging for process Platformer
2020-08-28 00:35:41.905777+0200 Platformer[4488:386478] WF: _userSettingsForUser : (null)
2020-08-28 00:35:41.905907+0200 Platformer[4488:386478] WF: _WebFilterIsActive returning: NO
2020-08-28 00:35:41.920859+0200 Platformer[4488:386478] The preference key “AllowNewWindows” is not defined and will default to “FALSE”
2020-08-28 00:35:41.924659+0200 Platformer[4488:386478] The preference key “MediaPlaybackAllowsAirPlay” is not defined and will default to “TRUE”
2020-08-28 00:35:41.930051+0200 Platformer[4488:386478] WF: _userSettingsForUser : (null)
2020-08-28 00:35:41.930190+0200 Platformer[4488:386478] WF: _WebFilterIsActive returning: NO
2020-08-28 00:35:41.932204+0200 Platformer[4488:386478] The preference key “AllowBackForwardNavigationGestures” is not defined and will default to “FALSE”
2020-08-28 00:35:41.932367+0200 Platformer[4488:386478] The preference key “Allow3DTouchLinkPreview” is not defined and will default to “TRUE”
2020-08-28 00:35:41.932485+0200 Platformer[4488:386478] CDVWebViewEngine will reload WKWebView if required on resume
2020-08-28 00:35:41.932599+0200 Platformer[4488:386478] Using WKWebView
2020-08-28 00:35:41.933082+0200 Platformer[4488:386478] [CDVTimer][console] 0.095963ms
2020-08-28 00:35:41.933303+0200 Platformer[4488:386478] [CDVTimer][handleopenurl] 0.079036ms
2020-08-28 00:35:41.935289+0200 Platformer[4488:386478] [CDVTimer][intentandnavigationfilter] 1.863956ms
2020-08-28 00:35:41.935508+0200 Platformer[4488:386478] [CDVTimer][gesturehandler] 0.077009ms
2020-08-28 00:35:41.935642+0200 Platformer[4488:386478] [CDVTimer][TotalPluginStartup] 2.735972ms
2020-08-28 00:35:42.987622+0200 Platformer[4488:386478] The preference key “AutoHideSplashScreen” is not defined and will default to “TRUE”
}

Maybe you can try this:

Source: White blank screen issue with cordova ios with cordova-plugin-ionic-webview or cordova-plugin-wkwebview-engine plugins - Stack Overflow

Thanks for Your reply arthuro555.

I tried, unfortunately without success. Several warnings popped up, e.g. outdated openURL, but the end result is the same.

Is there anyone here who managed to build an application and run it on ios?

Is it even possible now?

I think I have a solution:

By default cordova is installed in version 10.

Check version:
cordova -v

If the answer is not:

9.0.0 (cordova-lib@9.0.1)

Uninstall Cordova:

sudo npm uninstall -g cordova

Install Cordova 9:

sudo npm install -g cordova@9.0.0

Go to directory with exported project.

Add to Your config.xml, at the end of file:

In Your directory with exported project, create cordova project with cordova-ios@5.1.1:

cordova platform add ios@5.1.1

Add plugins:

cordova plugin add cordova-plugin-wkwebview-engine
cordova plugin add cordova-plugin-wkwebview-file-xhr
cordova plugin add GitHub - TheMattRay/cordova-plugin-wkwebviewxhrfix: Provides a fix for local file access under Cordova and WKWebView

cordova emulate ios --target=“iPhone-11-Pro-Max, 13.6”

This solves my problem with the white / black screen.

I can see one downside, the game is slower, at least in the emulator, than before.

I use only ios simulator from Xcode,
i don’t have Iphone, certificate and appstore account,
I don’t know if this will also solve the problem with the message:
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted.

Zapchasegames, Leimota or Coldwin, Can You confirm ?

Hello kubak,

First all, nice effort, thanks for that :wink:
But unfortunately still appears that Apple’s message…
The app works well :stuck_out_tongue_winking_eye:

Let’s continue the fight!:muscle::muscle:

Can you search for “UIWebView” throughout the project?
This could be some old plugin that uses a UIWebView, even a README file, or in a comment somewhere. From what I have read, this phrase is simply searched when uploading the application to the AppStore :wink:

How to build with cordova ios@6.1.1:

By default cordova is installed in version 10.

Check version:
cordova -v

If the answer is not:

9.0.0 (cordova-lib@9.0.1)

Uninstall Cordova:

sudo npm uninstall -g cordova

Install Cordova 9:

sudo npm install -g cordova@9.0.0

Go to directory with exported project.

Add to Your config.xml, at the end of file:

In Your directory with exported project, create cordova project with cordova-ios@6.1.1:

cordova platform add ios@6.1.1

Add plugin:

cordova plugin add https://github.com/AraHovakimyan/cordova-plugin-wkwebviewxhrfix

cordova emulate ios

This solves my problem with the white / black screen when building with newest ios@6.1.1

I use only ios simulator from Xcode,
i don’t have Iphone, certificate and appstore account,
I don’t know if this will also solve the problem with the message:
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted.

Zapchasegames, Leimota or Coldwin, Can You confirm ?

1 Like

Note: For Cordova iOS 6+ the following preferences are redundant(unnecessary). You can remove the following preferences from your project config.xml file.

     <preference name=“WKWebViewOnly” value=“true” />
     <feature name=“CDVWKWebViewEngine”>
          <param name=“ios-package” value=“CDVWKWebViewEngine” />
    </feature>
    <preference name=“CordovaWebViewEngine” value=“CDVWKWebViewEngine” />

you need just install

      Cordova plugin add https://github.com/AraHovakimyan/cordova-plugin-wkwebviewxhrfix

Finnaly I found a solution:

1 - sudo npm uninstall -g cordova

2 - sudo npm install -g cordova@9.0.0

3 - In config.xml

3.1 - At the end of file add this

<preference name=“WKWebViewOnly” value=“true” />

<feature name=“CDVWKWebViewEngine”>

<param name=“ios-package” value=“CDVWKWebViewEngine” />

</feature>

<preference name=“CordovaWebViewEngine” value=“CDVWKWebViewEngine” />

<preference name=“AllowBackForwardNavigationGestures” value=“true” />

<preference name=“Allow3DTouchLinkPreview” value=“false” />

3.2 Inside <platform name=“ios”> add this

<config-file parent=“GADApplicationIdentifier” target="*-Info.plist">

<string>ca-app-pub-xxxx~xxxxx</string>

</config-file>

<config-file parent=“GADIsAdManagerApp” target="*-Info.plist">

<true />

</config-file>

4 - sudo cordova platform add ios@6.1.1

5 - sudo cordova plugin add https: //github.com/AraHovakimyan/cordova-plugin-wkwebviewxhrfix

6 - cd platforms

7 - sudo chmod -R 777 ios

8 - download this SDK de anúncios para celular do Google  |  iOS  |  Google Developers

9 - replace platforms/iOS/{AppName}/plugins/cordova-admob-sdk/GoogleMobileAds.framework by download folder (this is to pass ITMS-90809: Deprecated API Usage )

10 - open project by Xcode

11 - open CDVAdMob.m

11.1 - replace DEFAULT_BANNER_ID to yours pub id

11.2 - comment this line self.bannerView.bounds = bf (this is to show banner ad)

12 - Enjoy :wink:

3 Likes

I will try the solution provided by @leimota. Thank you very much for working on this everyone!