Xamarin.GooglePlayServices.Ads: как добавить пакет в запрос объявления - PullRequest
0 голосов
/ 29 мая 2018

Учитывая, что у меня есть AdView в проекте Xamarin.Android:

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);

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Вам необходимо передать Java-класс (через Java.Lang.Class.FromType) вашего пользовательского события (ICustomEventBanner).

В моем случае у меня есть один с именем 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:

0 голосов
/ 29 мая 2018

Ожидается, что класс расширяется от CustomEvent, согласно Документации

public AdRequest.Builder addCustomEventExtrasBundle (Class<? extends
CustomEvent> adapterClass, Bundle customEventExtras)

Вот отличное руководство по началу работы с пользовательскими событиямипрямо из Google, где они переходят, используя CustomEventBanner.Это на Java, но должно быть достаточно легко портировать на C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...