Gestern habe ich meine App auf TestFlight hochgeladen und nach einer Weile hat Apple mir diese Warnung gesendet:
ITMS-90809: Veraltete API-Nutzung - Apple akzeptiert keine Einsendungen von Apps mehr, die UIWebView-APIs verwenden. Weitere Informationen finden Sie unter https://developer.apple.com/documentation/uikit/uiwebview .
Die Sache ist, dass ich UIWebView nicht in meiner App verwende, also habe ich versucht, meine Pods zu aktualisieren, aber immer noch das Gleiche. Übrigens ist dies mein dritter Build auf TestFlight und dies ist das erste Mal, dass Apple mir dies sendet. Irgendwelche Ideen?
Aktualisieren
Das sind meine Schoten:
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
Scheint, als hätte ich die Rahmenbedingungen für das Problem gefunden.
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
Muss ich jetzt auf Google warten, um sie zu reparieren und meine Pods zu aktualisieren?
Antworten:
Überprüfen Sie, ob Sie in Ihrem Code die UIWebView-Klasse verwenden. Wenn ja, ersetzen Sie Ihre Implementierung durch WKWebView. Andernfalls müssen Sie Ihre Pods überprüfen.
Gehen Sie mit Terminal in Ihren Projektordner und führen Sie den folgenden Befehl aus:
grep -r "UIWebView" .
Alle übereinstimmenden Pods müssen aktualisiert werden. Jetzt stecke ich fest, weil ich UIWebView in Google AdMob (Version 7.49.0) gefunden habe und auf eine neue Version von Google warte.
quelle
7.55.0 Removed all references to UIWebView. UIWebView is no longer supported.
Installing Google-Mobile-Ads-SDK 7.56.0 (was 7.53.1)
Binary file Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.framework/GoogleMobileAds matches
Sie können jedes der Frameworks in der archivierten App untersuchen, um festzustellen, ob sich eines darauf bezieht
UIWebView
. Von der Befehlszeilecd
bis zur archivierten App, z.cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Verwenden Sie dort den
nm
Befehl, um die Symbole Ihrer App und jedes Frameworks der App zu sichern:nm myapp | grep UIWeb for framework in Frameworks/*.framework; do fname=$(basename $framework .framework) echo $fname nm $framework/$fname | grep UIWeb done
Dies wird Ihnen zumindest sagen, welcher Rahmen der Schuldige ist.
quelle
UIWebView
, aber ich bezweifle sehr, dass es noch vor der Veröffentlichung von iOS 13 im Herbst sein wird.Ich werde meine eigene Frage beantworten, sobald ich Neuigkeiten zu dieser E-Mail habe. Google hat mir mitgeteilt, dass es zu diesem Problem mehrere Tickets gibt, die das Problem so schnell wie möglich beheben werden. Auch heute wurde meine App für den AppStore genehmigt, so dass es vorerst nur eine Warnung zu sein scheint.
quelle
WKWebView
ist der Ersatz fürUIWebView
. Wenn Sie keinenUIWebView
Code verwenden, können Sie durch Ausführen des folgenden Terminalbefehls leicht feststellen, welche Bibliothek noch eineUIWebView
Referenz verwendet (verpassen Sie nicht den. (Punkt)).Von der Befehlszeile aus CD zur archivierten App, z
cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Und dann rennen
grep -r UIWebView
ODER anrufen
grep -r UIWebView /Path/To/Project/*
Dadurch erhalten Sie eine Ausgabe für die Framework-Übereinstimmung
./<ANY>.framework/Headers/ANY.h:#define ANYUseUIWebView ANY_NAME_PASTE(ANY_PREFIX_NAME, ANYUseUIWebView)
Ausgabe für Bibliotheksübereinstimmung
Binary file ./<FRAMEWORK-NAME>.framework/<LIB-FILE>.a matches
Aktualisieren Sie diese Bibliotheken
Schauen Sie sich auch diesen mittleren Artikel an
quelle
UIWebView
(z. B. AFNetworking, ZDCChat), wurden bereits aktualisiert und aktualisierte Pods wurden überprüft, da sie bereits für WKWebView aktualisiert wurden. Außerdemgrep -r UIWebView .
wird mir die gleiche Pod-Liste fürUIWebView
Übereinstimmungen angezeigt, und Apple gibt beim Senden der App auf iTunesconnect./Pods/Target Support Files/AFNetworking/AFNetworking-umbrella.h:#import "UIWebView+AFNetworking.h" Binary file ./Pods/ZDCChat/ZDCChatAPI.framework/ZDCChatAPI matches Binary file ./Pods/ZDCChat/ZDCChat.framework/ZDCChat matches Binary file ./Pods/.git/index matches
ZDCChatAPI
Dieser Pod verwendetuiwebview
Für ein Projekt mit Cocoapods:
grep -r UIWebView Pods/
quelle
brew install ripgrep cd Pods rg UIWebView
YoutubePlayer-in-WKWebView/README.md 10:- using WKWebView instead of UIWebView. TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.h 166: to emulate the link detection behaviour of UIWebView. TwitterKit/iOS/TwitterKit.framework/Headers/Twitter.h 28: * either UIWebView or SFSafariViewController depending on iOS TwitterKit/iOS/TwitterKit.framework/Headers/TWTRTweet.h 84: * Suitable for loading in a `UIWebView`, `WKWebView` or passing to Safari:
quelle
Verwenden Sie die neueste Firebase-Version
https://firebase.google.com/support/release-notes/ios
Version 6.8.1: Verweise auf UIWebViewDelegate wurden entfernt, um der Warnung zur App Store-Übermittlung (# 3722) zu entsprechen.
quelle
Wenn Sie mit Unity 3D erstellen, handelt es sich um ein Wissensproblem (in Änderungsprotokollen anerkannt), das derzeit für Version 2019.3 behoben ist (getestet und zurückportiert).
Überprüfen Sie das Ticket hier https://unity3d.com/unity/whats-new/2019.2.4
quelle
Hintergrundgeschichte
In meinem ReactJS + Cordova-Projekt habe ich eine App in den App Store hochgeladen und sie war erfolgreich. Kurz darauf erhielt ich eine E-Mail mit Zitaten
ITMS-90809: Deprecated API Usage
. Nach stundenlangen (über Tage) Recherchen und mehreren fehlgeschlagenen Uploads habe ich mich mit einem kostenpflichtigen Entwicklertoken (50 US-Dollar) mit Apple verbunden. Sie antworteten im Grunde mit "Überprüfen Sie Ihren Knotenmodulordner" und erstatteten mein Token, weil sie mir bei diesem äußerst zweideutigen Fehler nicht helfen wollten.Frühere Versuche
wkwebview-engine
und zu verwendenwkwebviewxhrfix
grep -r
in Archiven, iOS-Quellen und der gesamten Projektquelle habe ich viele Notizen gefunden, aber nichts, was wirklich geholfen hätte.npm
Pakete aktualisiertcocoapod
Pods wurden gereinigt und aktualisiertLetzter Versuch
Nachdem ich alle "zusätzlichen" Cordova-Plugins, npm-Pakete und Pods entfernt hatte, blieb mir eine Hülle einer Anwendung übrig, aber ich stand immer noch vor der Ablehnung des Apfels. Bei
grep -r
erneuter Verwendung gab es noch einen Verweis auf "Facebook", der mich zu einer alten Kopie des führteFBSDK
.Lösung
FBSDK
wurde manuell hinzugefügttarget > Build Phases > Link Binary With Libraries
. Es gab auch einecordovaFacebook.m
intarget > Build Phases > Compile Sources
. Nachdem ich diese alten, nicht gepflegten Dateien entfernt hatte, konnte ich sie ohne Probleme auf iTunes Connect hochladen.quelle
Ich habe dieses Problem gelöst, indem ich das ionische Webview-Plugin aktualisiert und Einstellungen in der Konfiguration hinzugefügt habe.
Ich habe folgende Schritte ausgeführt:
1.cordova plugin rm cordova-plugin-ionic-webview
2.Cordova Plugin Cordova-Plugin-Ionic-Webview @ neuesten hinzufügen
3.Einstellungen in der Konfigurationsdatei unter der iOS-Plattform hinzugefügt:
<preference name="WKWebViewOnly" value="true" /> <feature name="CDVWKWebViewEngine"> <param name="ios-package" value="CDVWKWebViewEngine" /> </feature> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
Nachdem ich diese Schritte ausgeführt habe, wird meine App gesendet und später in der Überprüfung genehmigt.
quelle
In meinem Fall
Firebase/Auth
wurde die veraltete UIWebView-API verwendet, und die von mir verwendete Version war eine ältere. Also habe ich denFirebase/Auth
Pod mit dem Befehl aktualisiert.pod update 'Firebase/Auth'
Hinweis : Um herauszufinden, welche Frameworks diese API verwenden, suchen Sie einfach nach "UIWebView" (
cmd
+shift
+F
).quelle
Es war ein langer Prozess, aber ich habe es geschafft, das oben genannte Problem zu lösen. Lassen Sie sich von mir durch den Prozess führen und meine Erkenntnisse mitteilen. Das Wichtigste zuerst, es ist nicht notwendig, was für mich funktioniert hat, wird für Sie funktionieren. Sie müssen jede mögliche Lösung ausprobieren, die es gibt. Ich habe einige der in verschiedenen Threads veröffentlichten Lösungen verfolgt. (Unten verlinkt).
Ich habe diesen hier erwähnten grep-Befehl ausprobiert . Es gab bestimmte Bibliotheken, die angezeigt wurden, z. B. React-Native-FBSDK, React-Native-Google-Sign, React-Native-Gesten-Handler. Also habe ich alle aktualisiert und den Build hochgeladen, aber trotzdem die Warnung erhalten. Hat nicht funktioniert
Der letzte Ausweg, um alle Bibliotheken zu aktualisieren, von dem ich weiß, dass er viel Zeit in Anspruch nehmen würde. Meine erste Vermutung war also, 'react-native-firebase' auf das neueste Problem der Version 6 zu aktualisieren . Es gab jedoch einige Probleme mit der Benachrichtigung, die nicht aktiviert war, sodass ich sie nicht verwenden konnte. Außerdem haben sie erwähnt, dass ihre Version 5.5.6 sauber ist und keine UIWebViewIssues enthält, vorausgesetzt, Sie aktualisieren Ihr iOS-SDK auf 6.12. + Weitere Informationen hier . Dies brachte mich zu meiner zweiten Vermutung, die in meinem Fall "React-Native-UX-Cam" war. Zum Glück haben sie ihre Bibliothek aktualisiert, um alle Referenzen von UIWebView zu entfernen. Ich habe auf die neueste Version und BOOM aktualisiert, das Problem wurde behoben. Ich habe meine App bei Apple eingereicht und bisher keine Warnungen. Mehr Infos hier Arbeitete 💥
Hoffe das hilft jemandem.
quelle
FB Sdk über Version 7.16.1 haben dieses Problem. Eigentlich hat es keine Dateien im Framework-Ordner.
Dieser Fehler wird behoben, wenn Sie ihn mit FBSDK v7.16.1 erstellen. Appstore hat die App jedoch aufgrund der veralteten API-Nutzung (UIWebView) abgelehnt.
Ich löse es mit FBSDK v7.19.2.
1) Wenn Sie das Projekt für xcode erstellen, wird der Erwähnungsfehler "shareKit nicht gefunden" angezeigt. Ich löse es, indem ich den facebookSDK-Ordner aus dem Framework-Ordner meines vorherigen Builds (mit fbsdk v7.16.1) an denselben Speicherort des aktuellen xcode-Ordners (Frameworks / FacebookSDK ....) kopiere.
2) Öffnen Sie dann Ihr Xcode-Projekt und fügen Sie Dateien vom Speicherort Frameworks / FacebookSDK / Plugins / IOS / (Sharekit, Corekit, Loginkit) zu Frameworks in Xcode hinzu.
3) Fügen Sie "$ (PROJECT_DIR) / Frameworks / FacebookSDK / Plugins / iOS" zu den Framework-Suchpfaden in die Build-Einstellungen von Xcode ein.
4) Öffnen Sie das Projekt im Terminal: Geben Sie "grep -r" UIWebView "ein." Wenn dies eine Übereinstimmung mit UIWebView anzeigt, entfernen Sie diese durch Öffnen der Datei.
5) Wenn in einer Binärdatei von FBSDKCoreKit Übereinstimmung angezeigt wird. Öffnen Sie die Datei in TextEdit unter MAC und suchen und ersetzen Sie alle "UIWebView" in "WKWebView".
6) Speichern Sie es und fügen Sie es erneut zu Frameworks bei Xcode hinzu. Erstellen und an Appstore senden.
quelle
Wenn Sie eine Ionic-App erstellen, können Sie zwischen Cordova und Capacitor wählen, um eine native mobile Version bereitzustellen. Während neuere Versionen WKWebView automatisch verwenden, verwendet Cordova UIWebView-APIs weiterhin direkt oder enthält Verweise darauf (Capacitor wurde aktualisiert, um diese Verweise zu entfernen - siehe unten).
Bei der App-Übermittlung durchsucht Apple den App-Code nach der Zeichenfolge "UIWebView" und generiert dann eine Übermittlungswarnung, wenn sie gefunden wird. Daher ist eine zukünftige Version von cordova-ios (der Cordova iOS-Bibliothek) erforderlich, um sicherzustellen, dass alle Verweise auf UIWebView-APIs entfernt werden.
ein anderer Gedanke. Ich weiß nicht, ob es Sinn macht oder technisch möglich ist.
Verschieben Sie UIWebView ebenfalls in ein Plugin und lassen Sie cordova-ios dieses oder einige der WKWebView-Plugins verwenden. cordova-ios enthält nur den Code zum Laden einer Webansicht. Standardmäßig sollte die nächste Version die Apache WKWebViewEngine laden (Plugin standardmäßig auf neuen Apps installiert, Migrationsanweisung für alte Apps). Benutzer, die UIWebView, das Ionic, eine Gabel oder andere benötigen, können ihr eigenes so angeben, wie es jetzt ist.
Auf diese Weise wäre kein UIWebView in Cordova-iOS und es wäre immer noch flexibel genug wie heute.
quelle
Dasselbe sah ich für die native React-App. Überprüfen Sie die folgenden Dinge:
1) Sie verwenden das React-Native-Webview-Modul, anstatt es direkt aus React-Native zu importieren (Community-Webview wird in Version 0.60 als Lean-Core-Entfernung veraltet und in der nächsten stabilen Version entfernt). ( hier überprüfen )
2) Bitte überprüfen Sie auch, ob Sie Bibliotheken von Drittanbietern verwenden, die Webview verwenden. Wenn nicht, bitten Sie die Bibliotheksbetreuer, die React-Native-Webview zu aktualisieren.
3) Sie können den Upload durchführen. Bitte fügen Sie Kommentare hinzu, wenn jemand weitere Schwierigkeiten hat.
Überprüfen Sie hier die wichtigsten Änderungen in Version 0.60
Eine andere Möglichkeit, diese Warnung zu entfernen, besteht darin, useWebKit = {true} zu übergeben, dh, Sie verwenden WKWebView und nicht UIWebView. Anschließend können Sie das Problem wie folgt beheben: Veraltete API-Verwendung.
Jetzt habe ich app.ipa bereits ohne Berechtigungswarnungen erfolgreich in AppStore hochgeladen.
<WebView style={{flex: 1, backgroundColor: Colors.white}} useWebKit={true} startInLoadingState={true} source={{uri: 'my http url'}} />```
quelle
Wenn jemand hilft, laufe ich
pod update
auf dem Terminal und archiviere dann erneut. Das ist für mich in Ordnung.quelle
Für mich haben Skripte nicht geholfen. Ich musste einfach jedes Framework manuell durchgehen, mir die Versionshinweise ansehen und sie aktualisieren.
quelle
Ich werde davon befreit, indem ich die folgenden Schritte befolge:
Schritt 1:
Schritt 2:
Schritt 3:
1. RCTWebView.h 2. RCTWebView.m 3. RCTWebViewManager.h 4. RCTWebViewManager.m
Bereinigen Sie dann das Projekt und das Archiv.
NB: Wenn Sie die Bibliothek " React-Native-Community / React-Native-Webview" verwenden, aktualisieren Sie mit der neuesten Version, andernfalls ist dies erledigt.
quelle
Sie sollten dieses Cordova Plugin installieren:
https://github.com/apache/cordova-plugin-wkwebview-engine
<preference name="WKWebViewOnly" value="true" />
Fügen Sie dann in Ihrer config.xml im Abschnitt iOS hinzu.Erhöhen Sie dann die Version und laden Sie sie erneut hoch.
quelle
Um herauszufinden, wo Sie a verwenden
UIWebView
, gehen Sie zu Ihrem Projektstamm im Terminal und verwenden Sie diesen Befehlgrep -r -F "UIWebView" .
Das '.' ist sehr wichtig. Es weist das System an, die Zeichenfolge "UIWebView" im aktuellen Ordner und in den Unterordnern zu durchsuchen . Dadurch werden auch die Cocoapods- Bibliotheken durchsucht
quelle