问题
I'm trying to add a new app to the app store. After few days from submitting the app bundle I got this issue message
Dear Developer,
We identified one or more issues with a recent delivery for your app. Please correct the following issues, then upload again.
ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).
I searched for a solution to this problem but I didn't get a clear answer for this issue. Many people recommended to search for UIWebView
in the whole project and replace it with WKWebView
. So I tried this command in my project grep -r "UIWebView" .
but i got so many results all of them in node_modules folder.
My question is should I replace all UIWebView
in node_modules to WKWebView
? or there's another solution to this problem without editing node_modules files?
Here's the result of executing grep -r "UIWebView" .
command
./node_modules/@types/react-native/index.d.ts: * If `true`, use WKWebView instead of UIWebView.
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/2TRWDP84LFFQE/UIKit-1V5UHAPTOD24G.pcm matches
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/2TRWDP84LFFQE/MapKit-THDG17AXS092.pcm matches
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/2TRWDP84LFFQE/modules.idx matches
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/7M428SZDQ9GN/UIKit-1V5UHAPTOD24G.pcm matches
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/7M428SZDQ9GN/modules.idx matches
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/CEMG215KE65F/UIKit-1V5UHAPTOD24G.pcm matches
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/CEMG215KE65F/WebKit-3M3AFHBPPA3AE.pcm matches
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/CEMG215KE65F/modules.idx matches
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/3RS3JN9HVPBL7/UIKit-1V5UHAPTOD24G.pcm matches
Binary file ./node_modules/react-native-maps/ios/build/ModuleCache.noindex/3RS3JN9HVPBL7/modules.idx matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/records/2N/UIWebView.h-GRW3LKFDYW2N matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/records/TD/RCTWebView.m-2ABZCZOZL9XTD matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUPlacemark.o-104O0JRZM0NZL matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTFont.o-2MPSYT0XTFTDX matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapCalloutSubview.o-2PCEP8ZIYRQHC matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTCxxMethod.o-Q9IIEI1LQBPV matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTJavaScriptLoader.o-3S80K4L1AECDY matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GQTPointQuadTree.o-1OVZ5FXZYUPY5 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTCxxBridge.o-2PR8RLY6MRMJC matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/JSCExecutorFactory.o-U9DXLPIS1QYJ matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUGridBasedClusterAlgorithm.o-1O524GQDIOBB1 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRDummyView.o-CRNCGBO0AER5 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/UIKit-1V5UHAPTOD24G.pcm-1WUH748S0XGJ0 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapPolygonManager.o-9GKPKR7MWHJX matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTNetworking.o-31PFUVOR4094C matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTSurfaceSizeMeasureMode.o-1W7LAN2SZ87X7 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGMSPolygon.o-1ZOG1NR1HJPSV matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapCalloutManager.o-OI9OUZCMP724 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTSurfaceView.o-34LLHOSL0QOJ9 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTModuleMethod.o-1OHZKUM3VP2R9 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUFeature.o-2SIW3YD2G67PB matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/UIKit-1V5UHAPTOD24G.pcm-16IGBUROMETCV matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUSimpleClusterAlgorithm.o-C5SGLVTUHIXP matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUKMLParser.o-2RFK7X20EO5XV matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUGradient.o-ZRHU90F82MM8 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTSurface.o-31SLS70M87B1T matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapUrlTile.o-3J4LRPXPXKQ20 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTDevSettings.o-356POJZV1YYEP matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTInspectorDevServerHelper.o-2KJJKQH9BHYWN matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUWrappingDictionaryKey.o-1WME37O7QIFEH matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTInspector.o-1CH0YXDRW39FL matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTNativeModule.o-1BF10I3NP2OVS matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTModuleData.o-36N9Y2SB9Z86F matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapOverlay.o-2SI74QI19IJL3 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUWeightedLatLng.o-2UAJEAR63BYDB matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUGeometryRenderer.o-32NYW1IK1HKN1 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapCircleManager.o-1MDLNCAX0XCAN matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTObjcExecutor.o-1VJMB4EITAK8A matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUGeometryCollection.o-1SEDUHZP0UA37 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUPolygon.o-1IPCR23068HTV matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/react-native-google-maps-dummy.o-421AO8WO52J4 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUHeatmapTileLayer.o-C1OVBYF2HGIV matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/UIKit-1V5UHAPTOD24G.pcm-1OJX6WIWTDM5 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTSurfaceHostingView.o-2HOOT3P1WPLMM matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTBlobManager.o-2A7ILD142RAFJ matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapManager.o-SHGBCO1ZVJ6L matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUStyle.o-1SAHPCL2HHF7I matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapOverlayManager.o-1TRTMH0XXN73D matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapCalloutSubviewManager.o-2HQJ99ODDZHY9 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTManagedPointer.o-3V8WH8BOZIHV matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTHTTPRequestHandler.o-OVSR76GRONSF matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTCxxModule.o-1GPNGVWXCTSMA matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTLog.o-3G08N8XHWIDUF matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTConvert+GMSMapViewType.o-KRHAJ37OGTAS matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMap.o-1QA5U22E1LHK9 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapPolygon.o-1LGFXNNABNUAY matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapCallout.o-3QUWJ05OF8S2R matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GQTPointQuadTreeChild.o-7OGXF4E7AEZ4 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGMSPolyline.o-2YJ9GLNI1OM45 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTMessageThread.o-2WY7TDZS6ISCY matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUDefaultClusterIconGenerator.o-2P4ATTBK5JI57 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapPolylineManager.o-1XLZHJZL4SIDE matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUGeoJSONParser.o-3NR6IGW933XAY matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapMarkerManager.o-1Y9PHY4QFPSU2 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUGroundOverlay.o-2PXUUQP1FE543 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUNonHierarchicalDistanceBasedAlgorithm.o-1S8VBM2MPH0OI matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTSurfaceHostingProxyRootView.o-42J92JECZVGJ matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUPoint.o-3OEX8CGS99IIT matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTPackagerConnection.o-2XYC26HIXHSVC matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTUIManagerObserverCoordinator.o-Z0QGOTFPSNGX matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUStaticCluster.o-3SSWGOOPBXNSX matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapPolyline.o-118WTEI3HMJEK matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/NSDataBigString.o-2ZLPAYR2VJH6I matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/UIKit-1V5UHAPTOD24G.pcm-AM2I5MRVOEF9 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTSurfaceRootView.o-3OS0QUA8Y2H4Y matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTFollyConvert.o-3PFGSX54CK3ZZ matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMULineString.o-3MJYEZ0KERL7V matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapCircle.o-2Q65OKMLFUCJO matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapMarker.o-3RT3UV7Y8NHVO matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUClusterManager.o-1Z8EUXQUWIMLG matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/RCTCxxUtils.o-1PEQK0Z2SWDS6 matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGoogleMapURLTileManager.o-3VCEQQ3F1EWPT matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/GMUDefaultClusterRenderer.o-25WFNHWVXTK5O matches
Binary file ./node_modules/react-native-maps/ios/build/Index/DataStore/v5/units/AIRGMSMarker.o-24NA48SVQF5RV matches
Binary file ./node_modules/react-native-maps/ios/build/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/Objects-normal/x86_64/RCTWebView.o matches
Binary file ./node_modules/react-native-maps/ios/build/Build/Products/Debug-iphonesimulator/React/libReact.a matches
Binary file ./node_modules/react-native-maps/.gradle/4.10.3/taskHistory/taskHistory.bin matches
./node_modules/react-native/node_modules/fbjs/lib/UserAgent.js.flow: * - UIWebView
./node_modules/react-native/node_modules/fbjs/lib/UserAgent.js: * - UIWebView
./node_modules/react-native/Libraries/Components/WebView/WebView.android.js: * If true, use WKWebView instead of UIWebView.
./node_modules/react-native/Libraries/Components/WebView/WebView.ios.js: * If true, use WKWebView instead of UIWebView.
./node_modules/react-native/React/Views/RCTWebView.m:@interface RCTWebView () <UIWebViewDelegate, RCTAutoInsetsProtocol>
./node_modules/react-native/React/Views/RCTWebView.m: UIWebView *_webView;
./node_modules/react-native/React/Views/RCTWebView.m: _webView = [[UIWebView alloc] initWithFrame:self.bounds];
./node_modules/react-native/React/Views/RCTWebView.m:#pragma mark - UIWebViewDelegate methods
./node_modules/react-native/React/Views/RCTWebView.m:- (BOOL)webView:(__unused UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
./node_modules/react-native/React/Views/RCTWebView.m: navigationType:(UIWebViewNavigationType)navigationType
./node_modules/react-native/React/Views/RCTWebView.m: @(UIWebViewNavigationTypeLinkClicked): @"click",
./node_modules/react-native/React/Views/RCTWebView.m: @(UIWebViewNavigationTypeFormSubmitted): @"formsubmit",
./node_modules/react-native/React/Views/RCTWebView.m: @(UIWebViewNavigationTypeBackForward): @"backforward",
./node_modules/react-native/React/Views/RCTWebView.m: @(UIWebViewNavigationTypeReload): @"reload",
./node_modules/react-native/React/Views/RCTWebView.m: @(UIWebViewNavigationTypeFormResubmitted): @"formresubmit",
./node_modules/react-native/React/Views/RCTWebView.m: @(UIWebViewNavigationTypeOther): @"other",
./node_modules/react-native/React/Views/RCTWebView.m:- (void)webView:(__unused UIWebView *)webView didFailLoadWithError:(NSError *)error
./node_modules/react-native/React/Views/RCTWebView.m: // Error code 102 "Frame load interrupted" is raised by the UIWebView if
./node_modules/react-native/React/Views/RCTWebView.m:- (void)webViewDidFinishLoad:(UIWebView *)webView
./node_modules/react-native-oauth/ios/OAuthManager/OAuthManager.h:@interface OAuthManager : NSObject <RCTBridgeModule, UIWebViewDelegate>
./node_modules/metro/node_modules/fbjs/lib/UserAgent.js.flow: * - UIWebView
./node_modules/metro/node_modules/fbjs/lib/UserAgent.js: * - UIWebView
./node_modules/react-native-linkedin/node_modules/react-native-webview/README.md:- [7.0.1](https://github.com/react-native-community/react-native-webview/releases/tag/v7.0.1) - Removed UIWebView
./node_modules/ua-parser-js/test/browser-test.json: "ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456 QQ/6.5.3.410 V1_IPH_SQ_6.5.3_1_APP_A Pixel/1080 Core/UIWebView NetType/WIFI Mem/26",
./node_modules/fbjs/lib/UserAgent.js.flow: * - UIWebView
./node_modules/fbjs/lib/UserAgent.js: * - UIWebView
./ios/Pods/AppAuth/README.md:for the auth request. `UIWebView` and `WKWebView` are explicitly *not*
./ios/Pods/GoogleSignIn/CHANGELOG.md:- Supports sign-in via UIWebView rather than app switching to a browser,
回答1:
Thanks to @PetrBela comment, I solved my problem by upgrading react-native to latest version by creating a new project, moving source files and then installing libraries one by one to see which librairies are not supported by new rn versions.
After upgrading I found that the problem was caused by the use of react-native-linkedin which have an old version of react-native-webview (7.0.5) as devDependency.
As a workaround I installed latest version of react-native-webview in my project and then deleted this folder node_modules/react-native-linkedin/node_modules/react-native-webview
来源:https://stackoverflow.com/questions/63154520/itms-90809-deprecated-api-usage-new-apps-that-use-uiwebview-are-no-longer-acc