-
Notifications
You must be signed in to change notification settings - Fork 82
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(AdMob): add AdMob banner examples to InternalTestApp #323
Added 320x50, 300x250 and flexible examples.
- Loading branch information
1 parent
d1cb443
commit 76dc9d4
Showing
12 changed files
with
1,837 additions
and
286 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
141 changes: 141 additions & 0 deletions
141
...ain/java/org/prebid/mobile/renderingtestapp/plugplay/bidding/admob/AdMobBannerFragment.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
package org.prebid.mobile.renderingtestapp.plugplay.bidding.admob | ||
|
||
import android.os.Bundle | ||
import android.util.Log | ||
import android.view.View | ||
import com.google.android.gms.ads.* | ||
import kotlinx.android.synthetic.main.events_admob.* | ||
import kotlinx.android.synthetic.main.events_mopub_banner.* | ||
import kotlinx.android.synthetic.main.events_mopub_banner.btnAdClicked | ||
import kotlinx.android.synthetic.main.events_mopub_banner.btnAdFailed | ||
import kotlinx.android.synthetic.main.fragment_bidding_banner.* | ||
import org.prebid.mobile.admob.AdMobBannerMediationUtils | ||
import org.prebid.mobile.admob.PrebidBannerAdapter | ||
import org.prebid.mobile.rendering.bidding.data.AdSize | ||
import org.prebid.mobile.rendering.bidding.display.MediationBannerAdUnit | ||
import org.prebid.mobile.renderingtestapp.AdFragment | ||
import org.prebid.mobile.renderingtestapp.R | ||
import org.prebid.mobile.renderingtestapp.plugplay.config.AdConfiguratorDialogFragment | ||
|
||
open class AdMobBannerFragment : AdFragment() { | ||
|
||
companion object { | ||
private const val TAG = "AdMobBannerFragment" | ||
} | ||
|
||
protected var adRequest: AdRequest? = null | ||
protected var adUnit: MediationBannerAdUnit? = null | ||
protected var bannerView: AdView? = null | ||
protected var adRequestExtras: Bundle? = null | ||
|
||
override fun initUi(view: View, savedInstanceState: Bundle?) { | ||
super.initUi(view, savedInstanceState) | ||
|
||
adIdLabel.text = getString(R.string.label_auid, configId) | ||
btnLoad?.setOnClickListener { | ||
resetAdEvents() | ||
it.isEnabled = false | ||
loadAd() | ||
} | ||
|
||
btnStopRefresh?.setOnClickListener { | ||
adUnit?.stopRefresh() | ||
resetEventButtons() | ||
btnLoad?.isEnabled = true | ||
} | ||
} | ||
|
||
override fun initAd(): Any? { | ||
MobileAds.initialize(requireContext()) { | ||
Log.d("MobileAds", "Initialization complete.") | ||
} | ||
|
||
bannerView = AdView(requireActivity()) | ||
bannerView?.adSize = com.google.android.gms.ads.AdSize(width, height) | ||
bannerView?.adUnitId = adUnitId | ||
bannerView?.adListener = getListener() | ||
viewContainer.addView(bannerView) | ||
|
||
adRequestExtras = Bundle() | ||
adRequest = AdRequest | ||
.Builder() | ||
.addCustomEventExtrasBundle(PrebidBannerAdapter::class.java, adRequestExtras!!) | ||
.build() | ||
val mediationUtils = AdMobBannerMediationUtils(adRequestExtras) | ||
|
||
|
||
adUnit = MediationBannerAdUnit( | ||
requireContext(), | ||
configId, | ||
AdSize(width, height), | ||
mediationUtils | ||
) | ||
adUnit?.setRefreshInterval(refreshDelay) | ||
return adUnit | ||
} | ||
|
||
override fun loadAd() { | ||
adUnit?.fetchDemand { result -> | ||
Log.d("Prebid", "Fetch demand result: $result") | ||
bannerView?.loadAd(adRequest!!) | ||
} | ||
} | ||
|
||
override fun configuratorMode(): AdConfiguratorDialogFragment.AdConfiguratorMode? { | ||
return AdConfiguratorDialogFragment.AdConfiguratorMode.BANNER | ||
} | ||
|
||
override val layoutRes = R.layout.fragment_bidding_banner_admob | ||
|
||
private fun resetAdEvents() { | ||
btnAdDidLoad?.isEnabled = false | ||
btnAdFailed?.isEnabled = false | ||
btnAdClicked?.isEnabled = false | ||
btnAdExpanded?.isEnabled = false | ||
btnAdCollapsed?.isEnabled = false | ||
} | ||
|
||
override fun onDestroyView() { | ||
super.onDestroyView() | ||
adUnit?.destroy() | ||
bannerView?.destroy() | ||
} | ||
|
||
protected fun getListener() = object : AdListener() { | ||
override fun onAdLoaded() { | ||
Log.d(TAG, "onAdLoaded") | ||
resetAdEvents() | ||
btnLoad?.isEnabled = true | ||
btnAdLoaded?.isEnabled = true | ||
} | ||
|
||
override fun onAdClicked() { | ||
Log.d(TAG, "onAdClicked") | ||
btnAdClicked?.isEnabled = true | ||
} | ||
|
||
override fun onAdOpened() { | ||
Log.d(TAG, "onAdOpened") | ||
btnAdOpened?.isEnabled = true | ||
} | ||
|
||
override fun onAdImpression() { | ||
Log.d(TAG, "onAdImpression") | ||
btnAdImpression?.isEnabled = true | ||
} | ||
|
||
override fun onAdClosed() { | ||
Log.d(TAG, "onAdClosed") | ||
btnAdClosed?.isEnabled = true | ||
} | ||
|
||
override fun onAdFailedToLoad(p0: LoadAdError) { | ||
Log.d(TAG, "onAdFailedToLoad - ${p0.message}") | ||
resetAdEvents() | ||
btnLoad?.isEnabled = true | ||
btnAdFailed?.isEnabled = true | ||
} | ||
|
||
} | ||
|
||
} |
51 changes: 51 additions & 0 deletions
51
.../org/prebid/mobile/renderingtestapp/plugplay/bidding/admob/FlexibleAdMobBannerFragment.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
package org.prebid.mobile.renderingtestapp.plugplay.bidding.admob | ||
|
||
import android.os.Bundle | ||
import android.util.Log | ||
import com.google.android.gms.ads.AdRequest | ||
import com.google.android.gms.ads.AdView | ||
import com.google.android.gms.ads.MobileAds | ||
import kotlinx.android.synthetic.main.fragment_bidding_banner.* | ||
import org.prebid.mobile.admob.AdMobBannerMediationUtils | ||
import org.prebid.mobile.admob.PrebidBannerAdapter | ||
import org.prebid.mobile.rendering.bidding.data.AdSize | ||
import org.prebid.mobile.rendering.bidding.display.MediationBannerAdUnit | ||
import com.google.android.gms.ads.AdSize as GamAdSize | ||
|
||
|
||
class FlexibleAdMobBannerFragment : AdMobBannerFragment() { | ||
|
||
companion object { | ||
private const val TAG = "FlexibleAdMobBanner" | ||
} | ||
|
||
override fun initAd(): Any? { | ||
MobileAds.initialize(requireContext()) { | ||
Log.d("MobileAds", "Initialization complete.") | ||
} | ||
|
||
bannerView = AdView(requireActivity()) | ||
bannerView?.adSize = GamAdSize.getLandscapeInlineAdaptiveBannerAdSize(requireContext(), GamAdSize.FULL_WIDTH) | ||
bannerView?.adUnitId = adUnitId | ||
bannerView?.adListener = getListener() | ||
viewContainer.addView(bannerView) | ||
|
||
adRequestExtras = Bundle() | ||
adRequest = AdRequest | ||
.Builder() | ||
.addCustomEventExtrasBundle(PrebidBannerAdapter::class.java, adRequestExtras!!) | ||
.build() | ||
val mediationUtils = AdMobBannerMediationUtils(adRequestExtras) | ||
|
||
|
||
adUnit = MediationBannerAdUnit( | ||
requireContext(), | ||
configId, | ||
AdSize(width, height), | ||
mediationUtils | ||
) | ||
adUnit?.setRefreshInterval(refreshDelay) | ||
return adUnit | ||
} | ||
|
||
} |
34 changes: 34 additions & 0 deletions
34
...va/org/prebid/mobile/renderingtestapp/plugplay/bidding/admob/RandomAdMobBannerFragment.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package org.prebid.mobile.renderingtestapp.plugplay.bidding.admob | ||
|
||
import android.util.Log | ||
import org.prebid.mobile.admob.PrebidBannerAdapter | ||
import org.prebid.mobile.rendering.bidding.display.BidResponseCache | ||
import kotlin.random.Random | ||
|
||
class RandomAdMobBannerFragment : AdMobBannerFragment() { | ||
|
||
private val random = Random.Default | ||
|
||
override fun loadAd() { | ||
adUnit?.fetchDemand { result -> | ||
Log.d("Prebid", "Fetch demand result: $result") | ||
randomRemovingBidResponseFromCache() | ||
bannerView?.loadAd(adRequest!!) | ||
} | ||
} | ||
|
||
private fun randomRemovingBidResponseFromCache() { | ||
val randomValue = random.nextInt(0, 2) | ||
val doRemove = randomValue == 1 | ||
if (doRemove) { | ||
Log.d("RandomAdMobBanner", "Random removing response!") | ||
val responseId = adRequestExtras?.getString(PrebidBannerAdapter.EXTRA_RESPONSE_ID) ?: "" | ||
if (responseId.isNotBlank()) { | ||
BidResponseCache.getInstance().popBidResponse(responseId) | ||
} | ||
} else { | ||
Log.d("RandomAdMobBanner", "Without removing.") | ||
} | ||
} | ||
|
||
} |
Oops, something went wrong.