Ayer, subí mi aplicación a TestFlight y después de un tiempo Apple me envió esta advertencia:
ITMS-90809: Uso de API obsoleto: Apple dejará de aceptar envíos de aplicaciones que utilicen las API UIWebView. Consulte https://developer.apple.com/documentation/uikit/uiwebview para obtener más información.
El caso es que no uso UIWebView en mi aplicación, así que intenté actualizar mis pods, pero seguí siendo lo mismo. Por cierto, esta es mi tercera compilación en TestFlight y esta es la primera vez que Apple me envía esto. ¿Algunas ideas?
Actualizar
Estas son mis vainas:
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'
Actualización 2
Parece que encontré los marcos con el problema.
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
Entonces, ¿tengo que esperar a que Google los arregle y actualice mis pods?
Respuestas:
Compruebe si utiliza en su código la clase UIWebView; Si es así, reemplace su implementación con WKWebView, de lo contrario, debe verificar sus Pods.
Vaya con el terminal a la carpeta de su proyecto y ejecute el comando:
grep -r "UIWebView" .
Todos los grupos de anuncios coincidentes deben actualizarse. Ahora estoy atascado porque encontré UIWebView en Google AdMob (versión 7.49.0) y estoy esperando una nueva versión de Google.
fuente
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)
todavía obtengoBinary file Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.framework/GoogleMobileAds matches
Puede examinar cada uno de los marcos en la aplicación archivada para ver si alguno de ellos hace referencia
UIWebView
. Desde la línea de comandocd
hasta la aplicación archivada, por ejemplo:cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Una vez allí, use el
nm
comando para volcar los símbolos de su aplicación y cada uno de los marcos de la aplicación:nm myapp | grep UIWeb for framework in Frameworks/*.framework; do fname=$(basename $framework .framework) echo $fname nm $framework/$fname | grep UIWeb done
Esto al menos le dirá qué marco es el culpable.
fuente
UIWebView
, pero dudo mucho que sea antes de que se lance iOS 13 este otoño.Responderé a mi propia pregunta ya que tengo noticias sobre este correo electrónico. Google me dijo que hay varios tickets sobre este problema y que lo van a resolver lo antes posible. También hoy mi aplicación ha sido aprobada para la AppStore, por lo que parece ser solo una advertencia por el momento.
fuente
WKWebView
es el reemplazo deUIWebView
. Si no tieneUIWebView
uso en su código, ejecutando el siguiente comando de terminal, puede saber fácilmente qué biblioteca todavía está usando laUIWebView
referencia (no se pierda el. (Punto)).Desde la línea de comando, cd a la aplicación archivada, p. Ej.
cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Y luego corre
grep -r UIWebView
O llamar
grep -r UIWebView /Path/To/Project/*
Esto le dará salida para la coincidencia del marco
./<ANY>.framework/Headers/ANY.h:#define ANYUseUIWebView ANY_NAME_PASTE(ANY_PREFIX_NAME, ANYUseUIWebView)
Salida para coincidencia de biblioteca
Binary file ./<FRAMEWORK-NAME>.framework/<LIB-FILE>.a matches
Actualice estas bibliotecas
también mira este artículo mediano
fuente
UIWebView
(por ejemplo, AFNetworking, ZDCChat) y también verifiqué los pods actualizados porque ya están actualizados para WKWebView, pero todavíagrep -r UIWebView .
me dan la misma lista de pods paraUIWebView
coincidencias y Apple también advierte al enviar la aplicación en 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
esta cápsula usauiwebview
Para proyecto con cocoapods:
grep -r UIWebView Pods/
fuente
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:
fuente
Utilice la última versión de firebase
https://firebase.google.com/support/release-notes/ios
Versión 6.8.1: Se eliminaron las referencias a UIWebViewDelegate para cumplir con la advertencia de envío de la App Store (# 3722).
fuente
Si está compilando con Unity 3D , este es un problema conocido (reconocido en los registros de cambios), actualmente está solucionado para la versión 2019.3 (se está probando y se está modificando).
Consulta el ticket aquí https://unity3d.com/unity/whats-new/2019.2.4
fuente
Trasfondo
En mi proyecto ReactJS + Cordova, cargué una aplicación en la tienda de aplicaciones y tuvo éxito. Poco después recibí un correo electrónico citando
ITMS-90809: Deprecated API Usage
. Después de horas (durante días) de investigación y múltiples cargas fallidas, me conecté con Apple usando un token de desarrollador pagado ($ 50); respondieron básicamente diciendo "revisa la carpeta de módulos de tu nodo" y reembolsaron mi token porque no me iban a ayudar con este error extremadamente ambiguo.Intentos anteriores
wkwebview-engine
ywkwebviewxhrfix
grep -r
archivos, fuente de ios y fuente completa del proyecto, encontré MUCHAS notas pero nada que realmente ayudara.npm
paquetescocoapod
podsIntento final
Después de eliminar todos los complementos, paquetes npm y pods de cordova "extra", me quedé con el shell de una aplicación, pero aún enfrentaba el rechazo de Apple. usando de
grep -r
nuevo todavía había una referencia a "facebook" que me llevó a una copia antigua delFBSDK
.Solución
FBSDK
se había agregado manualmente atarget > Build Phases > Link Binary With Libraries
. También hubo un asociadocordovaFacebook.m
entarget > Build Phases > Compile Sources
. Después de eliminar estos archivos antiguos y sin mantenimiento, pude cargarlos en iTunes Connect sin problemas.fuente
Resolví este problema actualizando el complemento iónico de vista web y agregando preferencias en config.
Seguí los siguientes pasos:
1.cordova complemento rm cordova-plugin-ionic-webview
2.el complemento cordova agregar cordova-plugin-ionic-webview @ latest
Preferencias agregadas en el archivo de configuración en la plataforma ios:
<preference name="WKWebViewOnly" value="true" /> <feature name="CDVWKWebViewEngine"> <param name="ios-package" value="CDVWKWebViewEngine" /> </feature> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
Después de seguir estos pasos, mi aplicación se envía y luego se aprueba en revisión.
fuente
En mi caso,
Firebase/Auth
estaba usando la API UIWebView obsoleta y la versión que estaba usando era una anterior. Así que actualicé elFirebase/Auth
pod con el comandopod update 'Firebase/Auth'
Nota : Para averiguar los frameworks que están usando esta API, simplemente busque "UIWebView" (
cmd
+shift
+F
)fuente
Fue un proceso largo, pero logré resolver el problema mencionado anteriormente. Déjame guiarte por el proceso y compartir mis hallazgos. Lo primero es lo primero, no es necesario que lo que funcionó para mí funcionará para ti. Necesita probar todas las soluciones posibles que se ofrecen. Seguí algunas de las soluciones publicadas en varios hilos. (Vinculado a continuación).
Probé este comando grep mencionado aquí . Hubo ciertas bibliotecas que aparecieron, es decir, react-native-fbsdk, react-native-google-sign, react-native-gesto-handler. Así que los actualicé todos y cargué la compilación, pero aún recibí la advertencia. No funciono
El último recurso para actualizar todas las bibliotecas, que sé que iba a llevar mucho tiempo. Así que mi primera suposición fue actualizar 'react-native-firebase' al último problema de la versión v6 . Pero tenía algunos problemas con la notificación que no estaba activada, por lo que no pude usarla. También mencionaron que su v.5.5.6 está limpio y no tiene ningún UIWebViewIssues dado que actualiza su sdk de iOS a 6.12. + Más información aquí . Así que esto me llevó a mi segunda conjetura que en mi caso fue 'react-native-ux-cam'. Afortunadamente, actualizaron su biblioteca para eliminar todas las referencias de UIWebView. Actualicé a la última versión y BOOM, el problema se resolvió. Envié mi aplicación a Apple y hasta ahora no hay advertencias. Más información aquí Trabajó 💥
Espero que esto ayude a alguien.
fuente
FB Sdk anterior a la versión 7.16.1 tiene este problema. En realidad, no tiene archivos en la carpeta del marco.
Este error se elimina cuando lo compila con FBSDK v7.16.1, pero Appstore rechazó la aplicación debido al uso depreciado de la API (UIWebView).
Lo resuelvo usando FBSDK v7.19.2.
1) Cuando compila el proyecto para xcode, muestra el error de mención, shareKit no encontrado. Lo resuelvo copiando la carpeta facebookSDK de la carpeta del marco de mi compilación anterior (con fbsdk v7.16.1), en la misma ubicación de la carpeta xcode actual (frameworks / FacebookSDK ....)
2) Luego, abra su proyecto xcode, agregue archivos desde la ubicación: Frameworks / FacebookSDK / Plugins / IOS / (sharekit, corekit, loginkit) en Frameworks en Xcode.
3) Agregue "$ (PROJECT_DIR) / Frameworks / FacebookSDK / Plugins / iOS" en las rutas de búsqueda de Framework en la configuración de compilación en Xcode.
4) Abra el proyecto en la terminal: escriba "grep -r" UIWebView "". , si muestra alguna coincidencia con UIWebView, elimínelo abriendo el archivo.
5) Si muestra coincidencia en un archivo binario de FBSDKCoreKit. Abra el archivo en TextEdit en MAC y busque y reemplace todo "UIWebView" por "WKWebView"
6) Guárdelo y vuelva a agregarlo a Frameworks en Xcode. Cree y envíe a la tienda de aplicaciones.
fuente
Cuando crea una aplicación Ionic, puede elegir entre Cordova o Capacitor para implementar una versión móvil nativa. Si bien las versiones más recientes usan WKWebView automáticamente, Cordova aún usa las API UIWebView directamente o contienen referencias a ellas (Capacitor se ha actualizado para eliminar estas referencias, ver más abajo).
Tras el envío de la aplicación, Apple busca en el código de la aplicación la cadena "UIWebView" y luego genera una advertencia de envío si la encuentra. Por lo tanto, se requerirá una versión futura de cordova-ios (la biblioteca iOS de Cordova) para garantizar que se eliminen todas las referencias a las API de UIWebView.
otro pensamiento. No sé si tiene sentido o es técnicamente posible.
Mueva UIWebView a un complemento también y haga que cordova-ios use este o algunos de los complementos de WKWebView. cordova-ios solo contiene el código para cargar una vista web. De forma predeterminada, la próxima versión debería cargar Apache WKWebViewEngine (complemento instalado de forma predeterminada en aplicaciones nuevas, instrucción de migración para aplicaciones antiguas). Los usuarios que necesitan UIWebView, Ionic, una bifurcación u otros pueden especificar la suya propia como está ahora.
De esa manera, ningún UIWebView estaría en cordova-ios y aún sería lo suficientemente flexible como hoy.
fuente
Enfrenté lo mismo para la aplicación nativa React. Compruebe las cosas a continuación:
1) Está utilizando el módulo react-native-webview en lugar de importarlo directamente desde react-native (community webview está obsoleto como una eliminación de núcleo lean en v0.60 y se eliminará en la próxima versión estable). ( marque aquí )
2) Verifique también si está utilizando bibliotecas de terceros que usan webview y si no están actualizadas, pida a los encargados de mantenimiento de la biblioteca que actualicen react-native-webview.
3) está listo para la carga, agregue comentarios si alguien encuentra más dificultades.
Consulte aquí los cambios importantes en v0.60
Otra forma de deshacerse de esta advertencia es: comience a pasar useWebKit = {true}, es decir, está usando WKWebView, no UIWebView en absoluto. Luego, puede hacer lo siguiente para resolver el problema: uso de API obsoleto.
Ahora ya he subido app.ipa a AppStore con éxito sin ninguna advertencia de permiso.
<WebView style={{flex: 1, backgroundColor: Colors.white}} useWebKit={true} startInLoadingState={true} source={{uri: 'my http url'}} />```
fuente
Si alguien me ayuda, lo ejecuto
pod update
en la terminal y luego lo archivo de nuevo. Funciona para mi.fuente
Para mí, los guiones no ayudaron. Tuve que revisar manualmente cada marco, mirar la nota de la versión y actualizarlos.
fuente
Me deshago de esto siguiendo los pasos a continuación:
Paso 1:
Paso 2:
Paso 3:
1. RCTWebView.h 2. RCTWebView.m 3. RCTWebViewManager.h 4. RCTWebViewManager.m
Luego limpie el proyecto y el archivo.
NB: Si usa la biblioteca 'react-native-community / react-native-webview' , actualice con la última versión; de lo contrario, estará listo.
fuente
Debe instalar este complemento de Cordova:
https://github.com/apache/cordova-plugin-wkwebview-engine
Luego agregue
<preference name="WKWebViewOnly" value="true" />
su config.xml, en la sección de iOS.Luego aumente la versión y vuelva a cargarla.
fuente
Para encontrar dónde está usando un
UIWebView
, vaya a la raíz de su proyecto en la terminal y use este comandogrep -r -F "UIWebView" .
El '.' es muy importante. Le dice al sistema que busque la cadena "UIWebView" en la carpeta y subcarpetas actuales. Esto también buscará en las bibliotecas de cocoapods.
fuente