Xamarin Forms—Sofrendo com UIWebView

Douglas de Alvarenga Silva
TOTVS Developers
Published in
2 min readMay 22, 2020

A partir de abril de 2020, durante a publicação de um aplicativo para a App Store você passou a correr o sério risco de receber o e-mail da Apple com a mensagem abaixo.

E-mail da App Store — ITMS-90809: Deprecated API Usage

Se o seu aplicativo foi publicado antes desta data, tudo bem, você tem até dezembro para arrumar, porém, se é um novo aplicativo e utiliza Xamarin Forms, você terá que fazer algumas alterações antes de enviar novamente para o Testflight.

Há muito tempo, a Apple descontinuou o UIWebView e evoluiu bastante o seu sucessor WKWebView, só que agora acabou de vez o suporte a este legado. Isso levou a equipe da Microsoft liberar uma correção no Xamarin Forms 4.5. Para mais detalhes, clique aqui.

Mas e se você fez tudo que o post da Microsoft sugeriu e mesmo assim continua o erro ao submeter o aplicativo, então, para você, resta as alternativas:

1a) Adicionar o argumento “ — warn-on-type-ref=UIKit.UIWebView” no MTouch nas propriedades de seu projeto iOS.

Esta opção irá gerar um Warning indicando os pontos que utilizam o código legado e com mais detalhes na janela de Output do Visual Studio.

2a) Mesmo com o Warning gerado você não conseguiu identificar o problema, outra opção seria adicionar outro argumento “ — optimize=force-rejected-types-removal”.

Esta opção irá forçar a remoção do código UIWebView de qualquer parte de seu aplicativo e de qualquer pacote Nuget utilizado em seu aplicativo.

Tenha cuidado, pois isso pode gerar erros durante a execução.

3o) E se, mesmo assim, depois de ativar parâmetros, habilitar o Linker, atualizar a versão do Xamarin, o erro persistir? A última opção é gerar o IPA do seu aplicativo, descompactar e executar via linha de comando neste novo diretório o “grep -r UIWebView .”

Você deverá ter como resultado algo assim:
Binary file ./Frameworks/SeuAplicativo.framework/SeuAplicativo matches

Se listar apenas o arquivo referente ao seu aplicativo, pode ser que você utilize alguma biblioteca nativa do iOS, custom renderer ou esqueceu de ativar o Linker.

Caso liste algum outro arquivo, tudo indica que seja erro em pacotes Nuget que você utiliza. Esta listagem vai te ajudar a identificar.

A solução pode ser simplesmente atualizar o pacote, mas pode ser também que este plugin não tenha mais manutenção, aí seu trabalho será muito maior.

Muita boa sorte!

--

--