34
votes

When submitting my latest build, Apple suddenly returned a message saying that there was an issue, specifically:

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.

Since I'm not using the webview plugin I'm at a loss as to where the UIWebView API is being used. Any advice on how to solve this?

This error appears with the latest stable flutter build 1.7.8+hotfix.4 and with the following packages included:

http: ^0.12.0
shared_preferences: ^0.4.3
intl: any
permission_handler: ^2.1.2
contacts_service: ^0.2.8
image: ^2.0.5
cached_network_image: ^1.0.0
url_launcher: ^5.0.1
path_provider: ^0.5.0+1
after_layout: ^1.0.7
connectivity: ^0.4.3+1
device_info: ^0.4.0+2
firebase_auth: ^0.11.1+7
firebase_messaging: ^5.1.2
firebase_analytics: ^5.0.0
notification_permissions: ^0.4.0

All of the packages have been updated to their latest version.

The output of flutter doctor is:

[✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Mac OS X 10.14.6 18G87, locale en-US)
    • Flutter version 1.7.8+hotfix.4 at /Users/per/flutter
    • Framework revision 20e59316b8 (6 weeks ago), 2019-07-18 20:04:33 -0700
    • Engine revision fee001c93f
    • Dart version 2.4.0

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/per/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 10.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.3, Build version 10G8
    • CocoaPods version 1.7.4

[✓] iOS tools - develop for iOS devices
    • ios-deploy 1.9.4

[✓] Android Studio (version 3.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 31.3.1
    • Dart plugin version 181.5656
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[✓] VS Code (version 1.31.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 2.25.1

[✓] Connected device (1 available)
    • Nexus 6P • 5VT7N15C31001152 • android-arm64 • Android 8.1.0 (API 27)

• No issues found!
5
You can check if there is open issue for this in github flutter issues. If not please open a issue there.Blasanka
The issue is being tracked in the Flutter repo. Lookes like it could be the firebase packages. github.com/flutter/flutter/issues/39470rkunboxed
I'm getting this as wellSheshank S.

5 Answers

24
votes

I think it was being used from the firebase_auth plugin. Try to update it to its latest version and then remember run pod update.

8
votes

I have this with our Cordova app and fixed it by updating a dependency.

Are you by any chance using the dependency or an other dependency is using the dependency "cordova-plugin-inappbrowser".

If so, this should be fixed in 3.1.0. See the release notes https://github.com/apache/cordova-plugin-inappbrowser/blob/master/RELEASENOTES.md And the PR fixing it https://github.com/apache/cordova-plugin-inappbrowser/pull/271

Update: it's not fixed yet. See issue on cordova-ios: https://github.com/apache/cordova-ios/issues/661 Note the: There is no deadline, I've contacted an Apple developer that has been tweeting about moving to WKWebView to see if he can provide more information, will update if I get a response.

Update: Cordova-ios 5.1.0 seems to fix this. See https://github.com/apache/cordova-ios/pull/715

6
votes

Since this has become the "goto answer" on Google for this rejection message, I'll add a React Native fix.

On React Native, considering that you've been a good developer and are not using UIWebView in your own code, use the following command to find out which of your dependencies still does use UIWebView:

grep -r UIWebView node_modules/*

There is a bit more info here.

1
votes

In my case the problem was the version of the Facebook plugin for Flutter that I was using in debug

I had to change the version from:

flutter_facebook_login: ^2.0.1

to:

flutter_facebook_login: ^3.0.0

Also had to change the pod file from:

pod 'FBSDKCoreKit', '~> 4.39.1'
pod 'FBSDKLoginKit', '~> 4.39.1'

to:

pod 'FBSDKCoreKit', '~> 5.5'
pod 'FBSDKLoginKit', '~> 5.5'

Then another problem became with the call of this function

fbLogin.logInWithReadPermissions(['email']);

just replaced with

fbLogin.logIn(['email']);

then rebuild everything, and upload again.

-1
votes

Even though I'm not using firebase_auth in my app, I was finding references to UIWEBVIEW in Xcode search from FirebaseAuth. It seems that Pods includes this by default. So this worked for me:

  1. Open project in Xcode
  2. Open the Pods folder and you will probably see a lot of sub-folders (packages)
  3. Right-click on the FirebaseAuth folder and select Delete
  4. Then select "Remove References" not "Move to Trash"
  5. Build the project
  6. The UIWEBVIEW references should be gone