c# - Xamarin.GooglePlayServices.Ads : how to add a bundle to the ad request

标签 c# xamarin xamarin.android

考虑到我在 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/

相关文章:

c# - 可空引用类型 - 接受参数的返回类型可空性

c# - 10,000 多条 html 记录可快速呈现

xamarin - 在OSX/Linux上的MonoDevelop中还原NuGet软件包

c# - 带有在线 MySql/Sql 数据库的 Xamarin Android 应用程序

android - 如何将 Android.Resource.Color 转换为 Android.Graphics.Color

Azure Hub 通知无法发送到 FCM

Xamarin Android 绑定(bind)不正确的方法覆盖名称

c# - Xamarin Forms 动态 ListView

c# - 使用 SyndicationItem 类在 rss 提要中显示图像

c# - SignalR .Net 客户端在设备上失败并出现 500 服务器错误,在模拟器上工作正常