上传 Xamarin 应用程序时无法解决 UIWebView 警告的弃用

Unable to Resolve Deprecation of UIWebView warning while uploading Xamarin application

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

根据文档

1)xamarin.forms版本为4.6 2)xamarin.ios版本为13.20 3)我在 mtouch 参数中添加了命令,linker 是 link All

我在上传构建以测试飞行时仍然收到警告

然后我关注了这个文档https://docs.microsoft.com/en-us/xamarin/ios/release-notes/13/13.16#help-with-uiwebview-deprecation,我们可以在其中找出 UIWebView 是否仍在我们的 application.I 中使用,我在构建输出中得到以下结果。

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.Forms.Platform.iOS 中有参考,因为 xamarin 包已根据博客更新到 4.6。

任何人都可以帮我摆脱这个警告吗?

请关注这个link

只需转到您的 iOS 项目,打开项目属性并在 'additional mtouch arguments field: --optimize=experimental-xforms-product-type' 在你的

使用 WKWebView 而不是 UIWebView。 UIWebView 已被弃用,从 2020 年 4 月起,App Store 将不再接受使用 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 构建部分中用于上传到商店(Release|iPhone、App Store|iPhone 等)的构建配置需要以下额外的 mtouch 参数--optimize=experimental-xforms-product-type
  • 应用程序需要使用 Xamarin.Forms 版本 >= 4.5 或 >= 4.6 如果使用 Material Visual
  • 它还需要使用 Xamarin.iOS 13.10.0.17 或更高版本,Visual Studio 包含在 Mac 8.4.1 和 Visual Studio 16.4.3 中。
  • 删除代码库中对UIWebView的所有引用

更多信息包含在 docs 中,如果这不能解决问题,应用程序可能正在使用 third-party 库,其中引用了需要更新的 UIWebView到没有它的版本或完全从应用程序中删除。

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

  1. 按照中提到的 3 个步骤进行操作 https://devblogs.microsoft.com/xamarin/uiwebview-deprecation-xamarin-forms/

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

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

对我来说,我不得不

1.Remove 弃用 scanbot.xamarin.ios SDK 并添加 scanbot.xamarin pkg

2.Remove 曲棍球应用程序 SDK,因为它已被弃用并且没有任何更新

3.Remove googleanalytics SDK,因为它没有在项目中使用