上载Xamarin应用程式时无法解决UIWebView警告的弃用问题

问题描述

我已经关注博客https://devblogs.microsoft.com/xamarin/uiwebview-deprecation-xamarin-forms/,以删除项目中的UIWebView依赖项。

根据文档

1)xamarin.forms版本是4.6 2)xamarin.ios版本是13.20 3)我在mtouch Arguments中添加了命令,链接器是link All

在更新版本以测试飞行时,我仍然收到警告

然后,我遵循本文档https://docs.microsoft.com/en-us/xamarin/ios/release-notes/13/13.16#help-with-uiwebview-deprecation,从中可以找到我们的应用程序中是否仍在使用UIWebView。在构建输出中,我将获得以下介绍。

MTOUCH : warning MT1502: One or more reference(s) to type 'UIKit.UIWebView' already exists inside 'Xamarin.Forms.Platform.iOS,Version=2.0.0.0,Culture=neutral,PublicKeyToken=null' before linking

我不确定为什么Xamarin包中的Xamarin.Forms.Platform.iOS中存在引用,因为博客已将其更新为4.6。

有人可以帮我摆脱这个警告吗?

解决方法

请遵循此link

只需转到您的iOS项目,打开项目属性,然后在 您的

中的“其他mtouch参数字段:--optimize = experimental-xforms-product-type” ,

使用WKWebView代替UIWebView。 UIWebView已过时,现在,App Store从2020年4月起将不再接受使用UIWebView的新应用。

using System.IO;
using CustomRenderer;
using CustomRenderer.iOS;
using Foundation;
using UIKit;
using WebKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(CustomWebView),typeof(WebViewRender_iOS))]
namespace CustomRenderer.iOS
{
    public class WebViewRender_iOS : WkWebViewRenderer
    {
        WKUserContentController userController;
  

    protected override void OnElementChanged(VisualElementChangedEventArgs e)
    {
        base.OnElementChanged(e);

        if (e.OldElement != null)
        {
            userController.RemoveAllUserScripts();
            userController.RemoveScriptMessageHandler("invokeAction");
            CustomWebView hybridWebView = e.OldElement as CustomWebView;
            hybridWebView.Cleanup();
        }

        if (e.NewElement != null)
        {
            CustomWebView hybridWebView = e.NewElement as CustomWebView;

            LoadRequest(new NSUrlRequest(new NSUrl(hybridWebView._WebURI)));
        }
    }
}

}

,

要淘汰弃用警告,需要进行一些不同的更改。

  • iOS Build部分中用于上传到商店(发行版| iPhone,App Store | iPhone等)的构建配置需要以下其他mtouch参数--optimize=experimental-xforms-product-type
  • 如果使用Material Visual,则应用程序需要使用Xamarin.Forms版本> = 4.5或> = 4.6
  • 它还需要使用Xamarin.iOS 13.10.0.17或更高版本,该版本包含在Visual Studio for Mac 8.4.1和Visual Studio 16.4.3中。
  • 在代码库中删除对UIWebView的所有引用

docs中包含更多信息,如果不能解决此问题,则该应用程序可能正在使用第三方库,其中引用了UIWebView,要么需要更新到一个版本,或完全从应用程序中删除。

,

谢谢大家的建议。以下是对我有用的。

  1. 请遵循中提到的3个步骤 https://devblogs.microsoft.com/xamarin/uiwebview-deprecation-xamarin-forms/

  2. 在存储库级别运行grep -r UIWebview .。它将显示.sln和第三方软件包中的引用列表

  3. 删除或更新第三方库。 Igore bin和obj文件夹

对我来说,我必须

1。删除不推荐使用的scanbot.xamarin.ios SDK,并添加scanbot.xamarin pkg

2。删除曲棍球应用程序SDK,因为它已过时且没有任何更新

3。删除项目中未使用的googleanalytics SDK

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...