ITMS-90809: Deprecated API Usage -- Apple will stop accepting submissions of apps that use UIWebView APIs

Yesterday, I uploaded my App to TestFlight and after a while Apple sent me this warning:

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.

The thing is that I don't use UIWebView in my app so I tried to update my pods but still the same thing.By the way this is my 3rd build on TestFlight and this is the first time apple sends me this. Any ideas?

Update

These are my pods:

pod 'Firebase/Core'
pod 'Firebase/Firestore'
pod 'Firebase/MLVision'
pod 'Firebase/MLVisionTextModel'
pod 'SVProgressHUD'
pod 'SPPermission/Camera'
pod 'SPPermission/PhotoLibrary'
pod 'Mantis'
pod 'SwiftKeychainWrapper'
pod 'SwiftyOnboard'
pod 'Fabric'
pod 'Crashlytics'

Update 2

Seems like I found the frameworks with the issue.

Binary file ./Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/FirebaseMLCommon matches
Binary file ./Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics matches
Binary file ./Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision matches

So now do I have to wait for google to fix them and update my pods?


Check if you use in your code the UIWebView class; if yes replace your implementation with WKWebView, else need check your Pods.

Go with terminal into your project folder and execute the command: grep -r "UIWebView" .

All matched pod must be updated. Now I'm stuck because I found UIWebView into Google AdMob (version 7.49.0) and I'm waiting a new version from Google.


You can examine each of the frameworks in the archived app to see if any of them refer to UIWebView. From the command line, cd to the archived app, e.g.:

cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app

Once there, use the nm command to dump the symbols of your app and each of the app's frameworks:

nm myapp | grep UIWeb
for framework in Frameworks/*.framework; do
  fname=$(basename $framework .framework)
  echo $fname
  nm $framework/$fname | grep UIWeb
done

This will at least tell you which framework is the culprit.


I will answer my own question as I have news about this email. Google told me that there are several tickets about this issue and they are going to resolve this as soon as possible. Also today my app has been approved for the AppStore so it seems to be just a warning for the time being.


For project with cocoapods:

grep -r UIWebView Pods/ 

WKWebView is the replacement for UIWebView. If you don't have UIWebView usage in your code than by executing the below terminal command you can easily get to know that which library is still using UIWebView reference (don't miss the . (dot)).

From the command line, cd to the archived app, e.g

cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app

And then Run

grep -r UIWebView

OR call

 grep -r UIWebView /Path/To/Project/*

This will give you Output for framework match

./<ANY>.framework/Headers/ANY.h:#define ANYUseUIWebView ANY_NAME_PASTE(ANY_PREFIX_NAME, ANYUseUIWebView)

Output for library match

Binary file ./<FRAMEWORK-NAME>.framework/<LIB-FILE>.a matches

Update these Libraries

pod update

also check out this Medium Article