如何解决ITMS-90809:已弃用 API 使用尝试使用 Xamarin iOS 部署 admob 横幅
当我尝试部署我的应用程序时,我收到了一封来自苹果的邮件:
亲爱的开发者:
我们发现您的应用最近交付的一个或多个问题“天气位置信息”1.7.7 (1.7.7)。请更正以下问题,然后重新上传。
ITMS-90809:不推荐使用 API - 不再接受使用 UIWebView 的新应用。相反,使用 WKWebView 来提高安全性和可靠性。了解详情 (https://developer.apple.com/documentation/uikit/uiwebview)。
最好的问候,
应用商店团队
我对 Xamarin 平台真的很陌生,我认为被苹果拒绝的人来自这个班:
using System;
using Xamarin.Forms;
namespace WeatherLocationInfo.Controls
{
public class AdmobControl : View
{
public static readonly BindableProperty AdUnitIdProperty = BindableProperty.Create(
nameof(AdUnitId),typeof(string),typeof(AdmobControl),string.Empty);
public string AdUnitId
{
get => (string)GetValue(AdUnitIdProperty);
set => SetValue(AdUnitIdProperty,value);
}
}
}
如果我将 public class AdmobControl : View
更改为 public class AdmobControl : UIView
并且
using UIKIT;
我在此行收到此错误:get => (string)GetValue(AdUnitIdProperty); set => SetValue(AdUnitIdProperty,value);
CS0103 The name GetValue does not exist in the current context
CS0103 The name SetValue does not exist in the current context
我能否得到一些示例,如何修复/更新我的代码并进行部署,而不会被苹果拒绝。
我休耕了这个steps,但苹果再次拒绝了我。
现在,在 iOS 构建选项的其他 mtouch 参数中,我尝试添加以下行:--optimize=force-rejected-types-removal
但他们再次拒绝了我。
我在 iOS 项目中使用 Xamarin.Forms(4.8.0.1451)
,在基础项目中使用 Xamarin.Forms(4.8.0.1821)
。
有没有办法解决这个苹果拒绝的问题?
我的类 AdMobVieWrenderer 如下所示:
using System.ComponentModel;
using Foundation;
using Google.MobileAds;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using WeatherLocationInfo.Controls;
using WeatherLocationInfo.iOS.Implementations;
[assembly: ExportRenderer(typeof(AdmobControl),typeof(AdMobVieWrenderer))]
namespace WeatherLocationInfo.iOS.Implementations
{
[Protocol]
public class AdMobVieWrenderer : VieWrenderer<AdmobControl,BannerView>
{
[System.Obsolete]
#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member
protected override void OnElementChanged(ElementChangedEventArgs<AdmobControl> e)
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
{
base.OnElementChanged(e);
if (Control == null)
{
SetNativeControl(CreateBannerView());
}
}
[System.Obsolete]
#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member
protected override void OnElementPropertyChanged(object sender,PropertyChangedEventArgs e)
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
{
base.OnElementPropertyChanged(sender,e);
Control.AdUnitID = Element.AdUnitId;
}
[System.Obsolete]
private BannerView CreateBannerView()
{
var bannerView = new BannerView(AdSizeCons.SmartBannerPortrait)
{
AdUnitID = Element.AdUnitId,RootViewController = GetVisibleViewController()
};
bannerView.LoadRequest(GetRequest());
Request GetRequest()
{
var request = Request.GetDefaultRequest();
return request;
}
return bannerView;
}
private UIViewController GetVisibleViewController()
{
var windows = UIApplication.SharedApplication.Windows;
foreach (var window in windows)
{
if (window.RootViewController != null)
{
return window.RootViewController;
}
}
return null;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。