考虑到我在 Xamarin.Android 项目中有一个 AdView:
private AdView _bannerAd;
我通常这样初始化它:
_bannerAd = new AdView(this)
{
AdSize = AdSize.SmartBanner,
AdUnitId = adUnitId,
Visibility = ViewStates.Visible
};
然后,当我加载横幅时,我必须构建请求。在这种情况下,我想添加一个额外的包,但是当我必须调用 requestbuilder.AddCustomEventExtrasBundle
时,我不知道将什么作为第一个参数。
var requestbuilder = new AdRequest.Builder();
var extras = new Bundle();
extras.PutString("npa", "1");
requestbuilder.AddCustomEventExtrasBundle(***, extras);
_bannerAd.LoadAd(requestbuilder.Build())
通过阅读方法定义,我真的不明白什么是“适配器类”。
[Register("addCustomEventExtrasBundle", "(Ljava/lang/Class;Landroid/os/Bundle;)Lcom/google/android/gms/ads/AdRequest$Builder;", "")]
public Builder AddCustomEventExtrasBundle(Class adapterClass, Bundle customEventExtras);
最佳答案
您需要传递自定义事件 (ICustomEventBanner
) 的 Java 类(通过 Java.Lang.Class.FromType
)。
就我而言,我有一个名为 SushiHangoverTextEventBanner
的广告,它已在 AdMob 中注册。
您需要实现 ICustomEventBanner
,假设这是一个独立的对象(在我的例子中是),因为 AdMob 将实例化它,从 Java.Lang.Object
继承它> 因此 Xamarin 将为它创建 ACW(JNI/Java 包装器)。
public class SushiHangoverTextEventBanner : Java.Lang.Object, ICustomEventBanner
{
SushiHangoverTextAdView customAdView;
public void OnDestroy()
{
customAdView?.Dispose();
}
public void OnPause()
{
~~~
}
public void OnResume()
{
~~~
}
public void RequestBannerAd(Context context, ICustomEventBannerListener listener, string serverParameter, AdSize size, IMediationAdRequest mediationAdRequest, Bundle customEventExtras)
{
customAdView = new SushiHangoverTextAdView(context);
~~~
}
}
我还有一个自定义广告(SushiHangoverAdView
,基于 TextView
),在 ICustomEventBanner
实现中使用。
注册并实现 AdMob 回调后,您只需将其传递给 AdRequest.Builder
:
using (var requestbuilder = new AdRequest.Builder())
{
var extras = new Bundle();
extras.PutString("npa", "1");
requestbuilder.AddCustomEventExtrasBundle(Java.Lang.Class.FromType(typeof(SushiHangoverTextEventBanner)), extras);
}
我帮助推荐通过 Admob 自定义事件示例:
关于c# - Xamarin.GooglePlayServices.Ads : how to add a bundle to the ad request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50574297/