Ontem, carreguei meu aplicativo no TestFlight e depois de um tempo a Apple me enviou este aviso:
ITMS-90809: Uso de API obsoleto - a Apple deixará de aceitar envios de aplicativos que usam APIs UIWebView. Consulte https://developer.apple.com/documentation/uikit/uiwebview para obter mais informações.
O fato é que eu não uso UIWebView em meu aplicativo, então tentei atualizar meus pods, mas ainda sou a mesma coisa. Pelo jeito, esta é minha terceira compilação no TestFlight e esta é a primeira vez que a apple me envia isso. Alguma ideia?
Atualizar
Estes são meus 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'
Atualização 2
Parece que encontrei as estruturas com o 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
Então, agora eu tenho que esperar o Google corrigi-los e atualizar meus pods?
Respostas:
Verifique se você usa em seu código a classe UIWebView; em caso afirmativo, substitua sua implementação por WKWebView, caso contrário, verifique seus pods.
Vá com o terminal para a pasta do projeto e execute o comando:
grep -r "UIWebView" .
Todos os pods correspondentes devem ser atualizados. Agora estou preso porque encontrei UIWebView no Google AdMob (versão 7.49.0) e estou esperando uma nova versão do Google.
fonte
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)
ainda receboBinary file Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.framework/GoogleMobileAds matches
Você pode examinar cada uma das estruturas no aplicativo arquivado para ver se alguma delas se refere a
UIWebView
. Da linha de comandocd
para o aplicativo arquivado, por exemplo:cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
Uma vez lá, use o
nm
comando para despejar os símbolos do seu aplicativo e cada uma das estruturas do aplicativo:nm myapp | grep UIWeb for framework in Frameworks/*.framework; do fname=$(basename $framework .framework) echo $fname nm $framework/$fname | grep UIWeb done
Isso pelo menos lhe dirá qual framework é o culpado.
fonte
UIWebView
, mas duvido muito que seja antes do lançamento do iOS 13 neste outono.Responderei minha própria pergunta conforme tiver novidades sobre este e-mail. O Google me disse que existem vários tíquetes sobre esse problema e eles vão resolver isso o mais rápido possível. Também hoje meu aplicativo foi aprovado para a AppStore, então parece ser apenas um aviso por enquanto.
fonte
WKWebView
é o substituto paraUIWebView
. Se você não temUIWebView
uso em seu código do que executando o comando de terminal abaixo, você pode facilmente saber qual biblioteca ainda está usando aUIWebView
referência (não perca o. (Ponto)).Na linha de comando, faça cd para o aplicativo arquivado, por exemplo
cd ~/Library/Developer/Xcode/Archives/<date>/myapp.xcarchive/Products/Applications/myapp.app
E então corra
grep -r UIWebView
OU ligue
grep -r UIWebView /Path/To/Project/*
Isso lhe dará saída para correspondência de estrutura
./<ANY>.framework/Headers/ANY.h:#define ANYUseUIWebView ANY_NAME_PASTE(ANY_PREFIX_NAME, ANYUseUIWebView)
Saída para correspondência de biblioteca
Binary file ./<FRAMEWORK-NAME>.framework/<LIB-FILE>.a matches
Atualize essas bibliotecas
também verifique este artigo médio
fonte
UIWebView
(por exemplo, AFNetworking, ZDCChat) e também verifiquei os pods atualizados, pois já foram atualizados para WKWebView, mas aindagrep -r UIWebView .
me dá a mesma lista de pods paraUIWebView
correspondências e a Apple também dá um aviso ao enviar o aplicativo no 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
este pod usauiwebview
Para projeto com cocoapods:
grep -r UIWebView Pods/
fonte
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:
fonte
Resolvi esse problema atualizando o plug-in iônico do webview e adicionando preferências na configuração.
Eu segui os seguintes passos:
1. plugin cordova rm cordova-plugin-ionic-webview
2. plugin cordova add cordova-plugin-ionic-webview @ mais recente
3.Adicionou preferências no arquivo de configuração na plataforma ios:
<preference name="WKWebViewOnly" value="true" /> <feature name="CDVWKWebViewEngine"> <param name="ios-package" value="CDVWKWebViewEngine" /> </feature> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
Depois de seguir essas etapas, meu aplicativo é enviado e posteriormente aprovado em revisão.
fonte
Use a versão mais recente do Firebase
https://firebase.google.com/support/release-notes/ios
Versão 6.8.1: Removidas referências a UIWebViewDelegate para obedecer ao aviso de envio da App Store (# 3722).
fonte
Se você está construindo com Unity 3D , este é um problema conhecido (reconhecido nos changelogs), está corrigido atualmente para a versão 2019.3 (sendo testado e portado para trás).
Verifique o tíquete aqui https://unity3d.com/unity/whats-new/2019.2.4
fonte
Foi um processo longo, mas consegui resolver o problema mencionado acima. Deixe-me guiá-lo pelo processo e compartilhar minhas descobertas. Em primeiro lugar, não é necessário que o que funcionou para mim funcione para você. Você só precisa tentar todas as soluções possíveis disponíveis. Segui algumas das soluções postadas em vários tópicos. (Link abaixo).
Tentei este comando grep mencionado aqui . Algumas bibliotecas apareceram, por exemplo, react-native-fbsdk, react-native-google-sign, react-native-gestos-handler. Então eu atualizei todos eles e carreguei a compilação, mas ainda recebi o aviso. Não funcionou
O último recurso para atualizar todas as bibliotecas, que sei que levaria muito tempo. Então, meu primeiro palpite foi atualizar 'react-native-firebase' para o problema da versão v6 mais recente . Mas ele teve alguns problemas com a notificação não estar ativada, então não pude usá-lo. Também mencionaram que seu v.5.5.6 é limpo e não tem nenhum UIWebViewIssues, dado que você atualiza seu SDK do iOS para 6.12. + Mais informações aqui . Portanto, isso me levou à minha segunda hipótese, que no meu caso era 'react-native-ux-cam'. Felizmente, eles atualizaram sua biblioteca para remover todas as referências de UIWebView. Atualizei para a versão mais recente e BOOM, o problema foi resolvido. Enviei meu aplicativo para a Apple e nenhum aviso até agora. Mais informações aqui Trabalhou 💥
Espero que isso ajude alguém.
fonte
História
No meu projeto ReactJS + Cordova, carreguei um aplicativo na app store e foi bem-sucedido. Pouco depois recebi um email citando
ITMS-90809: Deprecated API Usage
. Depois de horas (ao longo de dias) de pesquisa e vários uploads com falha, conectei-me à Apple usando um token de desenvolvedor pago ($ 50); eles responderam basicamente dizendo "verifique sua pasta de módulos de nó" e reembolsaram meu token porque não iriam me ajudar com esse erro extremamente ambíguo.Tentativas Anteriores
wkwebview-engine
-wkwebviewxhrfix
ins egrep -r
arquivos, fonte ios e fonte inteira do projeto, encontrei MUITAS notas, mas nada que realmente ajudou.npm
pacotescocoapod
podsTentativa Final
Depois de remover todos os plug-ins "extras" do Cordova, pacotes npm e pods, fiquei com o shell de um aplicativo, mas ainda enfrentando a rejeição da apple. usando
grep -r
novamente ainda havia uma referência a "facebook" que me levou a uma cópia antiga doFBSDK
.Solução
FBSDK
foi adicionado manualmente atarget > Build Phases > Link Binary With Libraries
. Também havia um associadocordovaFacebook.m
emtarget > Build Phases > Compile Sources
. Depois de remover esses arquivos antigos e não mantidos, consegui fazer o upload para o iTunes Connect sem problemas.fonte
No meu caso,
Firebase/Auth
estava usando a API UIWebView obsoleta e a versão que estava usando era mais antiga. Acabei de atualizar oFirebase/Auth
pod usando o comando,pod update 'Firebase/Auth'
Observação : para descobrir as estruturas que estão usando esta API, basta pesquisar "UIWebView" (
cmd
+shift
+F
)fonte
FB Sdk acima da versão 7.16.1 tem esse problema. Na verdade, não há arquivos na pasta do framework.
Este erro é removido quando você o constrói usando FBSDK v7.16.1, mas o Appstore rejeitou o aplicativo, devido ao uso depreciado da API (UIWebView).
Eu resolvo isso usando FBSDK v7.19.2.
1) Quando você constrói o projeto para xcode mostra o erro de menção, shareKit não encontrado. Eu resolvo isso copiando a pasta facebookSDK da pasta do meu build anterior (com fbsdk v7.16.1), para o mesmo local da pasta xcode atual (frameworks / FacebookSDK ....)
2) Em seguida, abra seu projeto xcode, adicione arquivos do local: Frameworks / FacebookSDK / Plugins / IOS / (sharekit, corekit, loginkit) em Frameworks no Xcode.
3) Adicione "$ (PROJECT_DIR) / Frameworks / FacebookSDK / Plugins / iOS" no Framework Search Paths nas configurações de compilação no Xcode.
4) Abra o Projeto no Terminal: digite "grep -r" UIWebView "." , se isso mostrar qualquer correspondência com UIWebView, remova-o abrindo o arquivo.
5) Se houver correspondência em um arquivo binário do FBSDKCoreKit. Abra o arquivo no TextEdit em MAC e encontre e substitua todos os "UIWebView" por "WKWebView"
6) Salve-o e adicione-o novamente ao Frameworks no Xcode. Crie e envie para appstore.
fonte
Ao construir um aplicativo Ionic, você pode escolher entre Cordova ou Capacitor para implantar uma versão móvel nativa. Embora as versões mais recentes usem WKWebView automaticamente, Cordova ainda usa APIs UIWebView diretamente ou contém referências a elas (o capacitor foi atualizado para remover essas referências - veja abaixo).
Após o envio do aplicativo, a Apple pesquisa o código do aplicativo para a string “UIWebView” e gera um aviso de envio, se encontrado. Portanto, uma versão futura do cordova-ios (a biblioteca Cordova iOS) será necessária para garantir que todas as referências às APIs UIWebView sejam removidas.
outro pensamento. Não sei se faz sentido ou se é tecnicamente possível.
Mova UIWebView para um plug-in também e faça cordova-ios usar este ou alguns dos plug-ins WKWebView. cordova-ios contém apenas o código para carregar um webview. Por padrão, a próxima versão deve carregar o Apache WKWebViewEngine (plug-in instalado por padrão em novos aplicativos, instrução de migração para aplicativos antigos). Os usuários que precisam de UIWebView, o Ionic, um fork ou outros podem especificar o seu próprio como está agora.
Dessa forma, nenhum UIWebView estaria em cordova-ios e ainda seria flexível o suficiente como hoje.
fonte
Eu enfrentei o mesmo para o aplicativo nativo React. Confira abaixo as coisas:
1) Você está usando o módulo react-native-webview em vez de importá-lo diretamente do react-native (o community webview está obsoleto como uma remoção de núcleo enxuto na v0.60 e será removido na próxima versão estável). ( verifique aqui )
2) Verifique também se você está usando qualquer biblioteca de terceiros que usa o webview está atualizado. Caso contrário, peça aos mantenedores da biblioteca para atualizar o react-native-webview.
3) você está pronto para fazer o upload, por favor, adicione comentários se alguém encontrar mais dificuldades.
Confira aqui as últimas mudanças na v0.60
Outra maneira de se livrar desse aviso é: comece a passar useWebKit = {true}, ou seja, você está usando WKWebView e não UIWebView. Em seguida, você pode fazer o seguinte para resolver o problema - Uso de API obsoleto.
Agora eu já carreguei app.ipa na AppStore com sucesso sem nenhum aviso de permissão.
<WebView style={{flex: 1, backgroundColor: Colors.white}} useWebKit={true} startInLoadingState={true} source={{uri: 'my http url'}} />```
fonte
Se alguém ajudar eu corro
pod update
no terminal e depois arquivo novamente. Isso funciona para mim.fonte
Para mim, os scripts não ajudaram. Tive que passar manualmente por cada estrutura e olhar a nota de versão e atualizá-los.
fonte
Eu me livro disso seguindo as etapas abaixo-
Passo 1:
Passo 2:
Etapa 3:
1. RCTWebView.h 2. RCTWebView.m 3. RCTWebViewManager.h 4. RCTWebViewManager.m
Em seguida, limpe o projeto e o arquivo.
NB: Se você usar a biblioteca 'react-native-community / react-native-webview' então atualize com a versão mais recente, caso contrário está feito.
fonte
Você deve instalar este plug-in Cordova:
https://github.com/apache/cordova-plugin-wkwebview-engine
Em seguida, adicione
<preference name="WKWebViewOnly" value="true" />
seu config.xml, na seção iOS.Em seguida, aumente a versão e carregue-a novamente.
fonte
A fim de encontrar onde você está usando um
UIWebView
, vá para a raiz do seu projeto no terminal e use este comandogrep -r -F "UIWebView" .
O '.' é muito importante. Diz ao sistema para pesquisar a string "UIWebView" na pasta e subpastas atuais. Isso também pesquisará as bibliotecas de cocoapods
fonte
Para atualizar o WebView obsoleto no ios
Isso resolveu meu problema com sucesso
plataformas de cd / ios grep -r UIWebView Pods /
Abra o Podfile e adicione / substitua o pod AFNetworking como
pod 'AFNetworking', '~> 4.0'
Finalmente na atualização do terminal pod
fonte