Hier, j'ai téléchargé mon application sur TestFlight et après un certain temps, Apple m'a envoyé cet avertissement:
ITMS-90809: Utilisation d'API obsolète - Apple cessera d'accepter les soumissions d'applications qui utilisent les API UIWebView. Voir https://developer.apple.com/documentation/uikit/uiwebview pour plus d'informations.
Le fait est que je n'utilise pas UIWebView dans mon application, j'ai donc essayé de mettre à jour mes pods, mais c'est toujours la même chose. Des idées?
Mise à jour
Ce sont mes 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'
Mise à jour 2
On dirait que j'ai trouvé les cadres avec le problème.
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
Alors maintenant, dois-je attendre que Google les répare et mette à jour mes pods?
Réponses:
Vérifiez si vous utilisez dans votre code la classe UIWebView; si oui, remplacez votre implémentation par WKWebView, sinon vous devez vérifier vos pods.
Allez avec le terminal dans votre dossier de projet et exécutez la commande:
grep -r "UIWebView" .
Tous les pods correspondants doivent être mis à jour. Maintenant, je suis bloqué car j'ai trouvé UIWebView dans Google AdMob (version 7.49.0) et j'attends une nouvelle version de Google.
la source
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
Vous pouvez examiner chacun des frameworks de l'application archivée pour voir si l'un d'eux fait référence
UIWebView
. De la ligne de commande,cd
à l'application archivée, par exemple:cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Une fois sur place, utilisez la
nm
commande pour vider les symboles de votre application et de chacun des frameworks de l'application:nm myapp | grep UIWeb for framework in Frameworks/*.framework; do fname=$(basename $framework .framework) echo $fname nm $framework/$fname | grep UIWeb done
Cela vous dira au moins quel cadre est le coupable.
la source
UIWebView
, mais je doute fortement que ce soit avant la sortie d'iOS 13 cet automne.Je répondrai à ma propre question car j'ai des nouvelles de cet e-mail. Google m'a dit qu'il y avait plusieurs tickets concernant ce problème et qu'ils allaient résoudre ce problème dès que possible. Aujourd'hui également, mon application a été approuvée pour l'AppStore, donc cela semble être juste un avertissement pour le moment.
la source
WKWebView
est le remplacement deUIWebView
. Si vous n'avez pas d'UIWebView
utilisation dans votre code qu'en exécutant la commande de terminal ci-dessous, vous pouvez facilement savoir quelle bibliothèque utilise encore laUIWebView
référence (ne manquez pas le. (Point)).À partir de la ligne de commande, cd vers l'application archivée, par exemple
cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Et puis courir
grep -r UIWebView
OU appeler
grep -r UIWebView /Path/To/Project/*
Cela vous donnera la sortie pour la correspondance du cadre
./<ANY>.framework/Headers/ANY.h:#define ANYUseUIWebView ANY_NAME_PASTE(ANY_PREFIX_NAME, ANYUseUIWebView)
Sortie pour la correspondance de bibliothèque
Binary file ./<FRAMEWORK-NAME>.framework/<LIB-FILE>.a matches
Mettre à jour ces bibliothèques
consultez également cet article moyen
la source
UIWebView
(par exemple AFNetworking, ZDCChat) et également vérifié les pods mis à jour car ils sont déjà mis à niveau pour WKWebView maisgrep -r UIWebView .
me donne toujours la même liste de pods pour lesUIWebView
matchs et Apple donne également un avertissement lors de la soumission de l'application sur 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
ce pod utiliseuiwebview
Pour projet avec cocoapodes:
grep -r UIWebView Pods/
la source
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:
la source
Utiliser la dernière version de Firebase
https://firebase.google.com/support/release-notes/ios
Version 6.8.1: Suppression des références à UIWebViewDelegate pour se conformer à l'avertissement de soumission App Store (# 3722).
la source
Si vous construisez avec Unity 3D , il s'agit d'un problème connu (reconnu dans les changelogs), il est actuellement corrigé pour la version 2019.3 (en cours de test et de rétroportage).
Vérifiez le billet ici https://unity3d.com/unity/whats-new/2019.2.4
la source
Passé
Sur mon projet ReactJS + Cordova, j'ai téléchargé une application sur l'App Store et cela a réussi. Peu de temps après, j'ai reçu un e-mail citant
ITMS-90809: Deprecated API Usage
. Après des heures (sur plusieurs jours) de recherche et plusieurs téléchargements échoués, je me suis connecté à Apple en utilisant un jeton de développeur payé (50 $); ils ont répondu en gros en disant "vérifiez le dossier de vos modules de nœuds" et ont remboursé mon jeton parce qu'ils n'allaient pas m'aider avec cette erreur extrêmement ambiguë.Tentatives précédentes
wkwebview-engine
etwkwebviewxhrfix
grep -r
les archives, la source ios et la source entière du projet, j'ai trouvé BEAUCOUP de notes mais rien qui n'a vraiment aidé.npm
packagescocoapod
podsTentative finale
Après avoir supprimé tous les plugins cordova "supplémentaires", les packages npm et les pods, je me suis retrouvé avec un shell d'une application mais toujours confronté au rejet de la pomme. en utilisant à
grep -r
nouveau il y avait encore une référence à "facebook" qui m'a conduit à une ancienne copie duFBSDK
.Solution
FBSDK
avait été ajouté manuellement àtarget > Build Phases > Link Binary With Libraries
. Il y avait aussi un associécordovaFacebook.m
danstarget > Build Phases > Compile Sources
. Après avoir supprimé ces anciens fichiers non maintenus, j'ai pu télécharger sur iTunes Connect sans problème.la source
J'ai résolu ce problème en mettant à jour le plugin ionic webview et en ajoutant des préférences dans config.
J'ai suivi les étapes suivantes:
1. plugin cordova rm cordova-plugin-ionic-webview
2. plug-in cordova ajouter cordova-plugin-ionic-webview @ dernier
3.Ajout de préférences dans le fichier de configuration sous la plateforme ios:
<preference name="WKWebViewOnly" value="true" /> <feature name="CDVWKWebViewEngine"> <param name="ios-package" value="CDVWKWebViewEngine" /> </feature> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
Après avoir suivi ces étapes, mon application est soumise et approuvée ultérieurement.
la source
Dans mon cas,
Firebase/Auth
j'utilisais l'API UIWebView obsolète et la version que j'utilisais était une version plus ancienne. Je viens donc de mettre à jour leFirebase/Auth
pod en utilisant la commande,pod update 'Firebase/Auth'
Remarque : pour déterminer les frameworks qui utilisent cette API, il suffit de rechercher "UIWebView" (
cmd
+shift
+F
)la source
C'était un long processus, mais j'ai réussi à résoudre le problème mentionné ci-dessus. Laissez-moi vous guider tout au long du processus et partager mes conclusions. Tout d'abord, ce qui a fonctionné pour moi fonctionnera pour vous. Vous devez absolument essayer toutes les solutions possibles. J'ai suivi certaines des solutions publiées dans divers fils de discussion. (Lien ci-dessous).
J'ai essayé cette commande grep mentionnée ici . Il y avait certaines bibliothèques qui sont apparues, à savoir react-native-fbsdk, react-native-google-sign, react-native-gesture-handler. Je les ai donc tous mis à niveau et téléchargé la version, mais j'ai toujours reçu l'avertissement. N'a pas fonctionné
Le dernier recours pour mettre à jour toutes les bibliothèques, ce qui, je le sais, prendrait beaucoup de temps. Ma première hypothèse a donc été de mettre à jour 'react-native-firebase' avec le dernier problème de version v6 . Mais il y avait des problèmes avec la notification non activée, donc je ne pouvais pas l'utiliser. Ils ont également mentionné que leur v.5.5.6 est propre et ne dispose d'aucun UIWebViewIssues étant donné que vous mettez à jour votre sdk iOS vers 6.12. + Plus d'informations ici . Cela m'a donc amené à ma deuxième hypothèse qui, dans mon cas, était «react-native-ux-cam». Heureusement, ils ont mis à jour leur bibliothèque pour supprimer toutes les références d'UIWebView. J'ai mis à jour vers la dernière version et BOOM, le problème a été résolu. J'ai soumis mon application à Apple et aucun avertissement jusqu'à présent. Plus d'informations ici A travaillé 💥
J'espère que cela aide quelqu'un.
la source
FB Sdk au-dessus de la version 7.16.1 a ce problème. En fait, il n'y a pas de fichiers dans le dossier du framework.
Cette erreur est supprimée lorsque vous la générez à l'aide de FBSDK v7.16.1, mais l'Appstore a été rejetée de l'application, en raison de l'utilisation dépréciée de l'API (UIWebView).
Je le résous en utilisant FBSDK v7.19.2.
1) Lorsque vous construisez le projet pour xcode, il affiche l'erreur de mention, shareKit introuvable. Je le résous en copiant le dossier facebookSDK du dossier framework de ma précédente build (avec fbsdk v7.16.1), au même emplacement du dossier xcode actuel (frameworks / FacebookSDK ....)
2) Ensuite, ouvrez votre projet xcode, ajoutez des fichiers à partir de l'emplacement: Frameworks / FacebookSDK / Plugins / IOS / (sharekit, corekit, loginkit) dans Frameworks dans Xcode.
3) Ajoutez "$ (PROJECT_DIR) / Frameworks / FacebookSDK / Plugins / iOS" dans les chemins de recherche de framework dans les paramètres de construction de Xcode.
4) Ouvrez le projet dans le terminal: tapez "grep -r" UIWebView "." , si cela montre une correspondance avec UIWebView, supprimez-la en ouvrant le fichier.
5) S'il affiche une correspondance dans un fichier binaire de FBSDKCoreKit. Ouvrez le fichier dans TextEdit sur MAC et recherchez et remplacez tout "UIWebView" par "WKWebView"
6) Enregistrez-le et ajoutez-le à nouveau dans Frameworks chez Xcode. Créez et envoyez vers l'Appstore.
la source
Lorsque vous créez une application Ionic, vous pouvez choisir entre Cordova ou Capacitor pour déployer une version mobile native. Alors que les versions plus récentes utilisent automatiquement WKWebView, Cordova utilise toujours les API UIWebView ou contiennent des références à celles-ci (Capacitor a été mis à jour pour supprimer ces références - voir ci-dessous).
Lors de la soumission de l'application, Apple recherche le code de l'application pour la chaîne «UIWebView» puis génère un avertissement de soumission s'il est trouvé. Par conséquent, une future version de cordova-ios (la bibliothèque Cordova iOS) sera nécessaire pour garantir que toutes les références aux API UIWebView sont supprimées.
une autre pensée. Je ne sais pas si cela a du sens ou est techniquement possible.
Déplacez également UIWebView vers un plugin et faites en sorte que cordova-ios utilise tel ou tel plug-in WKWebView. cordova-ios contient juste le code pour charger une vue Web. Par défaut, la prochaine version devrait charger Apache WKWebViewEngine (Plugin installé par défaut sur les nouvelles applications, Instructions de migration pour les anciennes applications). Les utilisateurs qui ont besoin d'UIWebView, de l'Ionic, d'un fork ou d'autres peuvent spécifier le leur comme c'est le cas maintenant.
De cette façon, aucun UIWebView ne serait dans cordova-ios et il serait encore assez flexible comme aujourd'hui.
la source
J'ai rencontré la même chose pour l'application native React. Vérifiez les choses ci-dessous:
1) Vous utilisez le module react-native-webview plutôt que de l'importer directement à partir de react-native (la webview de la communauté est obsolète en tant que suppression du lean core dans la v0.60 et sera supprimée dans la prochaine version stable). ( vérifier ici )
2) Veuillez également vérifier si vous utilisez des bibliothèques tierces qui utilisent Webview est à jour.Sinon, veuillez demander aux responsables de la bibliothèque de mettre à jour le react-native-webview.
3) vous êtes prêt pour le téléchargement, veuillez ajouter des commentaires si quelqu'un trouve d'autres difficultés.
Vérifiez ici les changements de rupture de la v0.60
Une autre façon de se débarrasser de cet avertissement est: commencez à passer useWebKit = {true}, c'est-à-dire que vous utilisez WKWebView et non UIWebView du tout. Ensuite, vous pouvez effectuer les opérations suivantes pour résoudre le problème - Utilisation de l'API obsolète.
Maintenant, j'ai déjà téléchargé app.ipa sur l'AppStore sans aucun avertissement d'autorisation.
<WebView style={{flex: 1, backgroundColor: Colors.white}} useWebKit={true} startInLoadingState={true} source={{uri: 'my http url'}} />```
la source
Si quelqu'un aide, je cours
pod update
sur le terminal, puis je archive à nouveau. Ça marche pour moi.la source
Pour moi, les scripts n'ont pas aidé. Je devais simplement parcourir manuellement chaque framework et consulter la note de publication et les mettre à jour.
la source
Je m'en débarrasse en suivant les étapes ci-dessous-
Étape 1:
Étape 2:
Étape 3:
1. RCTWebView.h 2. RCTWebView.m 3. RCTWebViewManager.h 4. RCTWebViewManager.m
Ensuite, nettoyez le projet et l'archive.
NB: Si vous utilisez la bibliothèque 'react-native-community / react-native-webview' , mettez à jour avec la dernière version sinon c'est fait.
la source
Vous devez installer ce plug-in Cordova:
https://github.com/apache/cordova-plugin-wkwebview-engine
Puis ajouter
<preference name="WKWebViewOnly" value="true" />
votre config.xml, sous la section iOS.Augmentez ensuite la version et téléchargez-la à nouveau.
la source
Afin de trouver où vous utilisez a
UIWebView
, accédez à la racine de votre projet dans le terminal et utilisez cette commandegrep -r -F "UIWebView" .
Le '.' c'est tres important. Il indique au système de rechercher la chaîne "UIWebView" dans le dossier et les sous-dossiers actuels. Cela recherchera également les bibliothèques de cocoapodes
la source