ITMS-90809: Устаревшее использование API - Apple прекратит принимать представления приложений, использующих UIWebView API - PullRequest
0 голосов
/ 23 октября 2019

Я видел некоторые другие вопросы с таким же названием, но мой вопрос другой.

Вчера я загрузил свое приложение в TestFlight, и через некоторое время Apple отправила мне это предупреждение:

ITMS-90809: устаревшее использование API - Apple прекратит прием заявок на приложения, использующие API UIWebView. См. https://developer.apple.com/documentation/uikit/uiwebview для получения дополнительной информации.

Я использую WebView для отображения данных HTML в моем приложении. Также я использовал WebView для воспроизведения аудио и видео. Так это предупреждение отклоняет мое приложение при отправке на проверку или я должен изменить эти функции с некоторыми другими API?

В этой ссылке , предоставленной AppStore, рассказывающей об использовании WKWebView вместо UIWebView, я пробовал это, и такого свойства не найдено в XAML. Нужно ли устанавливать какие-либо пакеты для получения этой функции? Кроме того, с помощью WKWebView можно ли воспроизводить аудио, видео и показывать данные HTML в приложении?

Обновление 1

Получение System.ArumentNullException при работес пользовательским рендерером. Я что-то пропустил?

enter image description here

Обновление 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>

1 Ответ

1 голос
/ 23 октября 2019

Это открытая ошибка с Xamarin.Forms на Github

На данный момент я не вижу никакого обходного пути или чего-то еще в потоке, но вы можете подождать, пока он будет исправленсо следующими выпусками Xamarin.Forms

Обновление : увидел обходной путь, который может работать, проверьте это https://github.com/xamarin/Xamarin.Forms/issues/7323#issuecomment-527294907

...