'Admob Banner randomly changing from BANNER to FULL_BANNER size with Jetpack Compose

I am integrating Admob's banners in my app, this app runs both in AndroidTV and Android, where it's running in mobile the dimensions must be 320x50(BANNER) which is part of the standard sizes in the docs, but it turns of nowhere to 468x60(FULL_BANNER), this behavior happens oftentimes when you run the app. I am using Jetpack Compose for this, and the add is placed inside a LazyColumn which is the equivalent to a recycler view

My code for the banner is like this:

enum class BannerSize {
    NORMAL,
    RECTANGLE;

    internal fun map(): AdSize = when (this) {
        NORMAL -> AdSize.BANNER
        RECTANGLE -> AdSize.MEDIUM_RECTANGLE
    }
}



    /*
     This Composable goes inside a lazy column with other composable where I have a 
     when statement, where I look if the index is 0 or 5 which are the specific 
     indexes I want to place the ads.
    */
@Composable
internal fun BannerAd(
    modifier: Modifier = Modifier,
    size: BannerSize = BannerSize.NORMAL,
    id: String = "TODO",
    pos: String = "TODO",
    adId: String,
) {
    val isInEditMode = LocalInspectionMode.current
    if (!isInEditMode) {
        Box(
            modifier = modifier
                .fillMaxWidth()
                .padding(20.dp),
            contentAlignment = Alignment.Center
        ) {
            AndroidView(
                modifier = modifier
                    .height(size.map().height.dp)
                    .width(size.map().width.dp),
                factory = { context ->
                    Napier.d(
                        tag = "Ads",
                        message = "Creating Ad, id: $id, adId: $adId, pos: $pos, size: $size"
                    )
                    AdView(context).apply {
                        adListener = object : AdListener() {
                            override fun onAdFailedToLoad(p0: LoadAdError) {
                                Napier.e(tag = "Ads", message = p0.message)
                            }
                        }
                        adSize = size.map()
                        adUnitId = adId
                        loadAd(
                            AdRequest.Builder()
                                .addNetworkExtrasBundle(
                                    AdMobAdapter::class.java,
                                    Bundle().also {
                                        it.putString("pos", pos)
                                    }
                                )
                                .build()
                        )
                    }
                }
            )
        }
    } else {
        EditModeText()
    }
}

enter image description here

Has someone encountered something like this while integrating ads with Compose? I've looking for some questions related to this, but I haven't found any



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source