ITMS-90809:不推荐使用的 API 使用 - Apple 将停止接受使用 UIWebView API 的应用程序的提交

Posted

技术标签:

【中文标题】ITMS-90809:不推荐使用的 API 使用 - Apple 将停止接受使用 UIWebView API 的应用程序的提交【英文标题】:ITMS-90809:Deprecated API Usage-Apple will stop accepting submissions of apps that use UIWebView API 【发布时间】:2019-10-23 05:21:20 【问题描述】:

我看到了一些其他同名的问题,但我的问题不同。

昨天,我将我的应用程序上传到了 TestFlight,过了一会儿,Apple 向我发送了以下警告:

ITMS-90809:不推荐使用的 API - Apple 将停止接受使用 UIWebView API 的应用提交。请参阅https://developer.apple.com/documentation/uikit/uiwebview 了解更多信息。

我正在使用WebView 在我的应用程序中显示 html 数据。另外,我使用WebView 播放音频和视频。那么这个警告是在提交审核时拒绝我的应用程序,还是应该使用其他一些 API 更改这些功能?

在 AppStore 提供的 link 中,讲述了使用 WKWebView 而不是 UIWebView,我试过了,但在 XAML 上没有找到这样的属性。我是否需要安装任何软件包才能获得该功能?另外,通过WKWebView,是否可以在应用中播放音频、视频和显示HTML数据?

更新 1

使用自定义渲染器时获取System.ArumentNullException。我错过了什么吗?

更新 2:渲染器代码 PCL

public class MyWebView : WebView

    public static readonly BindableProperty UrlProperty = BindableProperty.Create(
        propertyName: "Url",
        returnType: typeof(string),
        declaringType: typeof(MyWebView),
        defaultValue: default(string));

    public string Url
    
        get  return (string)GetValue(UrlProperty); 
        set  SetValue(UrlProperty, value); 
    

这个类在 ios 上的自定义渲染器:

[assembly: ExportRenderer(typeof(MyWebView), typeof(MyWebViewRenderer))]
namespace WKWebViewDemo.iOS

    public class MyWebViewRenderer : ViewRenderer<MyWebView, WKWebView>
    
        WKWebView _wkWebView;
        protected override void OnElementChanged(ElementChangedEventArgs<MyWebView> e)
        
            base.OnElementChanged(e);

            if (Control == null)
            
                var config = new WKWebViewConfiguration();
                _wkWebView = new WKWebView(Frame, config);
                SetNativeControl(_wkWebView);
            
            if (e.NewElement != null)
            
                Control.LoadRequest(new NSUrlRequest(new NSUrl(Element.Url)));
            
        
    

XAML

<StackLayout>
    <local:MyWebView Url="https://www.microsoft.com" VerticalOptions="FillAndExpand"/>
</StackLayout>

【问题讨论】:

我创建了一个新项目并在那里添加您的代码,它适用于我。你的项目中还有其他代码吗? @JackHua-MSFT 没有添加其他代码,可以分享一个示例吗? 您可以查看示例here,让我知道它是否适合您。 @JackHua-MSFT 我测试了你的示例代码,它工作正常。我在我的项目中使用了完全相同的代码,但显示了异常。我用的是XF版本:4.3.0.778476-pre1,这个异常还有其他原因吗? 我在 4.3.0.778476-pre1 下测试了我的样本,它也可以工作。如果可以分享您的项目,我可以为您检查。 【参考方案1】:

更新

这个问题已经解决了,可以在下面的回答中找到解决方法

ITMS-90909: Deprecated API Usage with iOS in Xamarin Forms app

这是 Github 上的 Xamarin.Forms 的一个未解决的错误

截至目前,我在线程上没有看到任何解决方法或其他内容,但您可以等待Xamarin.Forms 的下一版本修复它

更新:看到了一种可行的解决方法,请查看https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment-527294907

【讨论】:

这行吗? forums.xamarin.com/discussion/129626/… 理想情况下,这应该可以工作,继续试一试。另外,如果您有最新的 XF,我猜您已经准备好使用 WKWebViewRenderer。我不确定 我会用这个来测试飞行并给你更新,谢谢。 我用截图编辑了问题,你能看一下吗? 你确定控制在第二个if条件下,永远不会为空吗?

以上是关于ITMS-90809:不推荐使用的 API 使用 - Apple 将停止接受使用 UIWebView API 的应用程序的提交的主要内容,如果未能解决你的问题,请参考以下文章

ITMS-90809:不推荐使用的 API 使用 - Apple 将停止接受使用 UIWebView API 的应用程序的提交

ITMS-90809:不推荐使用的 API - 不再接受使用 UIWebView 的新应用程序。相反,使用 WKWebView 来提高安全性和可靠性

ITMS-90809:框架上的 UIWebView API 弃用

ITMS-90809:使用 react-native-html-to-pdf 时已弃用 API 使用警告

Apple 警告 ITMS-90809:收到已弃用的 API 使用情况

离子框架:ITMS-90809:UIWebView API 弃用(遵循所有说明,但我收到弃用消息)