IronSource Banner Ad in Android Jetpack Compose

93 views Asked by At

I have found a similar question asked which was answered for AdMob, but has no examples for ironSource or Unity LevelPlay ads.

For AdMob:

AndroidView(
            modifier = modifier.fillMaxWidth(),
            factory = { context ->
                AdView(context).apply {
                    adSize = AdSize.BANNER
                    adUnitId = context.getString(R.string.ad_id_banner)
                    loadAd(AdRequest.Builder().build())
                }
            }
        )

So for the above it looks like you would need a class similar to AdMob AdView but I was struggling to get this working with ironSource.

Is it possible to show ironSource ads with Android Jetpack Compose?

1

There are 1 answers

0
Mashnu Kanurkar On

You can use Android view similar to the example you have shared. You just need to inflate the Banner Layout and additionally set levelplay listeners to this layout, finally load banner by passing the layout.

Example, use the below code in your composable.

AndroidView(
            modifier = Modifier
                .height(50.dp)
                .fillMaxWidth()
                .background(color = Color.Black),
            factory = {
                IronSource.createBanner(context as Activity?, ISBannerSize.BANNER)
            },
            update = {
                Logger.d(TAG, "Banner layout inflated")
                ADManager.getInstance(context.applicationContext).setBannerLayout(it)
            })

And then set the listeners on this layout and load banner.

fun setBannerLayout(ironSourceBannerLayout: IronSourceBannerLayout){
   
        bannerLayout = ironSourceBannerLayout
        bannerLayout.visibility = View.INVISIBLE
        bannerLayout.levelPlayBannerListener = object : LevelPlayBannerListener {
            override fun onAdLoaded(p0: AdInfo?) {
                Logger.d(TAG, "Banner onAdLoaded")
                bannerLayout.visibility = View.VISIBLE
            }

            override fun onAdLoadFailed(p0: IronSourceError?) {
                Logger.d(TAG, "Banner onAdLoadFailed")
            }

            override fun onAdClicked(p0: AdInfo?) {
                Logger.d(TAG, "Banner onAdClicked")
            }

            override fun onAdLeftApplication(p0: AdInfo?) {
                Logger.d(TAG, "Banner onAdLeftApplication")
            }

            override fun onAdScreenPresented(p0: AdInfo?) {
                Logger.d(TAG, "Banner onAdScreenPresented")
            }

            override fun onAdScreenDismissed(p0: AdInfo?) {
                Logger.d(TAG, "Banner onAdScreenDismissed")
            }

        }
        Logger.d("banner", "will try to load banner")
        IronSource.loadBanner(bannerLayout)
    
}