Xamarin Forms—Sofrendo com UIWebView
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.
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!