Agregue almacenamiento de Huawei a nivel de proyecto build.gradle
buildscript {
repositories {
google()
jcenter()//add this line
maven { url 'https://developer.huawei.com/repo/' }
}
}allprojects {
//add this line
repositories {
google()
jcenter()
maven { url 'https://developer.huawei.com/repo/' }
}
}
Agregue la dependencia de Huawei Ads Kit en el nivel del módulo build.gradle
dependencies {
...
implementation 'com.google.android.gms:play-services-ads:19.4.0'//add this line
implementation 'com.huawei.hms:ads-lite:13.4.33.300'
}
Agregue un nuevo paquete y asígnele un nombre (por ejemplo: HuaweiCustomBannerEvent)
Necesitamos un total de 4 clases, vamos a crearlas todas a la vez y repasarlas una por una. Haga clic con el botón derecho en el paquete recién creado y seleccione Nuevo> Archivo / clase Kotlin y crea estos archivos de clase:
- Adaptador HuaweiCustomBanner
- HuaweiCustomBannerEventForwarder
- HuaweiCustomBannerListener
- HuaweiCustomBannerView
Así es como debería verse su libreta de direcciones en este momento:
Ahora trabajemos en HuaweiCustomBannerListener. Herede la clase com.huawei.hms.ads.AdListener e implemente todas las funciones abstractas necesarias. (Haga clic en Ctrl + o para ver todos los miembros sobrescritos)
//HuaweiCustomBannerListener.kt
import com.huawei.hms.ads.AdListeneropen class HuaweiCustomBannerListener : AdListener() {
override fun onAdClosed() {
super.onAdClosed()
}
override fun onAdFailed(errorCode: Int) {
super.onAdFailed(errorCode)
}
override fun onAdLeave() {
super.onAdLeave()
}
override fun onAdOpened() {
super.onAdOpened()
}
override fun onAdLoaded() {
super.onAdLoaded()
}
override fun onAdClicked() {
super.onAdClicked()
}
override fun onAdImpression() {
super.onAdImpression()
}
}
Ahora para HuaweiCustomBannerView, tome el contexto como un constructor y haga que esta clase escriba com.huawei.hms.ads.banner.BannerView. Siga estos pasos para cargar un anuncio
//HuaweiCustomBannerView.kt
import android.content.Context
import com.huawei.hms.ads.AdParam
import com.huawei.hms.ads.BannerAdSize
import com.huawei.hms.ads.banner.BannerViewclass HuaweiCustomBannerView(context: Context?) : BannerView(context) {
var bannerAdId: String? = null
fun fetchAd() {
if (bannerAdId == null) {
//when there's no ad id, use Huawei's test banner id
bannerAdId = "testw6vs28auh3"
}
this.adId = bannerAdId
this.bannerAdSize = BannerAdSize.BANNER_SIZE_360_57
val adParam = AdParam.Builder().build()
this.loadAd(adParam)
}
}
Además para HuaweiCustomBannerEvent Forwarder, tome CustomEventBannerListener y nuestro HuaweiCustomBannerView como constructor y herede nuestro HuaweiCustomBannerListener. Nuestro evento personalizado debe notificar a la mediación a través de nuestro HuaweiCustomBannerListener cuando se carga o no se carga. De lo contrario, el evento personalizado expirará y el reenvío de anuncios se moverá a otra red.
//HuaweiCustomBannerEventForwarder.ktimport android.util.Log
import com.google.android.gms.ads.AdError
import com.google.android.gms.ads.mediation.customevent.CustomEventBannerListener
import com.huawei.hms.ads.AdParamclass HuaweiCustomBannerEventForwarder(
listener: CustomEventBannerListener,
adView: HuaweiCustomBannerView
): HuaweiCustomBannerListener() {
private var listener: CustomEventBannerListener? = null
private var adView: HuaweiCustomBannerView? = nullinit {
this.listener = listener
this.adView = adView
}override fun onAdLoaded() {
listener?.onAdLoaded(adView)
}override fun onAdFailed(errorCode: Int) {
Log.e("error--",errorCode.toString())
listener?.onAdFailedToLoad(
AdError(
AdParam.ErrorCode.INNER,
AdParam.ErrorCode.INNER.toString(),"HuaweiBannerAds")
)
}override fun onAdClosed() {
listener?.onAdClosed()
}override fun onAdLeave() {
listener?.onAdLeftApplication()
}override fun onAdOpened() {
listener?.onAdOpened()
}override fun onAdClicked() {
listener?.onAdClicked()
}
}
Finalmente nuestro Adaptador HuaweiCustomBanner. Esta clase comienza cuando la mediación decide que se debe mostrar nuestro banner publicitario de Huawei.
//HuaweiCustomBannerAdapter.ktimport com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.mediation.MediationAdRequest
import com.google.android.gms.ads.mediation.customevent.CustomEventBanner
import com.google.android.gms.ads.mediation.customevent.CustomEventBannerListenerclass HuaweiCustomBannerAdapter : CustomEventBanner {
private lateinit var huaweiBannerView: HuaweiCustomBannerView
override fun onDestroy() {
TODO("Not yet implemented")
}override fun onPause() {
TODO("Not yet implemented")
}override fun onResume() {
TODO("Not yet implemented")
}override fun requestBannerAd(
context: Context?,
listener: CustomEventBannerListener,
serverParameters: String?,
size: AdSize,
mediationAdRequest: MediationAdRequest,
mediationExtras: Bundle?
) {
huaweiBannerView = HuaweiCustomBannerView(context)
huaweiBannerView.bannerAdId = serverParameters
huaweiBannerView.adListener = HuaweiCustomBannerEventForwarder(listener,huaweiBannerView)
huaweiBannerView.fetchAd()
}
}
¿Sigues esperando? Casi estámos allí. Ahora el último paso.