Skip to content

Commit

Permalink
feat(AdMob): add interstitial examples to Internal test app #328
Browse files Browse the repository at this point in the history
  • Loading branch information
ValentinPostindustria committed Jan 19, 2022
1 parent 96e77f2 commit 5f3094f
Show file tree
Hide file tree
Showing 6 changed files with 272 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
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.AdRequest
import com.google.android.gms.ads.LoadAdError
import com.google.android.gms.ads.interstitial.InterstitialAd
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback
import kotlinx.android.synthetic.main.events_admob_rewarded.*
import kotlinx.android.synthetic.main.fragment_bidding_banner.*
import org.prebid.mobile.admob.AdMobInterstitialMediationUtils
import org.prebid.mobile.admob.PrebidInterstitialAdapter
import org.prebid.mobile.rendering.bidding.display.MediationInterstitialAdUnit
import org.prebid.mobile.rendering.bidding.enums.AdUnitFormat
import org.prebid.mobile.renderingtestapp.AdFragment
import org.prebid.mobile.renderingtestapp.R
import org.prebid.mobile.renderingtestapp.plugplay.config.AdConfiguratorDialogFragment

open class AdMobInterstitialFragment : AdFragment() {

companion object {
private const val TAG = "AdMobInterstitial"
}

protected var extras: Bundle? = null
protected var interstitialAd: InterstitialAd? = null
protected var adUnit: MediationInterstitialAdUnit? = null

override val layoutRes = R.layout.fragment_admob_rewarded

override fun initUi(view: View, savedInstanceState: Bundle?) {
super.initUi(view, savedInstanceState)

adIdLabel.text = getString(R.string.label_auid, configId)
btnLoad.setOnClickListener {
handleLoadButtonClick()
}
}

override fun initAd(): Any? {
extras = Bundle()
val mediationUtils = AdMobInterstitialMediationUtils(extras)
adUnit = MediationInterstitialAdUnit(activity, configId, AdUnitFormat.DISPLAY, mediationUtils)
return adUnit
}

open override fun loadAd() {
val request = AdRequest
.Builder()
.addCustomEventExtrasBundle(PrebidInterstitialAdapter::class.java, extras!!)
.build()

adUnit?.fetchDemand { result ->
Log.d("Prebid", "Fetch demand result: $result")

InterstitialAd.load(requireContext(), adUnitId, request, object : InterstitialAdLoadCallback() {
override fun onAdLoaded(ad: InterstitialAd) {
btnAdLoaded?.isEnabled = true
btnLoad?.isEnabled = true
btnLoad?.text = getString(R.string.text_show)

interstitialAd = ad
}

override fun onAdFailedToLoad(adError: LoadAdError) {
btnAdFailed?.isEnabled = true
Log.e(TAG, adError.message)
interstitialAd = null
}
})
}

}

override fun configuratorMode() = AdConfiguratorDialogFragment.AdConfiguratorMode.INTERSTITIAL

override fun onDestroy() {
super.onDestroy()

interstitialAd = null

adUnit?.destroy()
adUnit = null
}

private fun resetAdEvents() {
btnAdLoaded?.isEnabled = false
btnAdFailed?.isEnabled = false
}

private fun handleLoadButtonClick() {
if (btnLoad?.text == getString(R.string.text_show)) {
interstitialAd?.show(requireActivity())
btnLoad?.text = getString(R.string.text_retry)
resetAdEvents()
} else if (btnLoad.text == getString(R.string.text_retry)) {
resetAdEvents()
btnLoad?.isEnabled = false
btnLoad?.text = "Loading..."
loadAd()
}
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package org.prebid.mobile.renderingtestapp.plugplay.bidding.admob

import android.util.Log
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.LoadAdError
import com.google.android.gms.ads.interstitial.InterstitialAd
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback
import kotlinx.android.synthetic.main.events_admob_rewarded.*
import kotlinx.android.synthetic.main.fragment_bidding_banner.*
import org.prebid.mobile.admob.PrebidInterstitialAdapter
import org.prebid.mobile.rendering.bidding.display.BidResponseCache
import org.prebid.mobile.renderingtestapp.R
import kotlin.random.Random

class AdMobInterstitialRandomFragment : AdMobInterstitialFragment() {

companion object {
private const val TAG = "AdMobInterstitial"
}

private val random = Random.Default

override fun loadAd() {
val request = AdRequest
.Builder()
.addCustomEventExtrasBundle(PrebidInterstitialAdapter::class.java, extras!!)
.build()

adUnit?.fetchDemand { result ->
Log.d("Prebid", "Fetch demand result: $result")

randomRemovingBidResponseFromCache()

InterstitialAd.load(requireContext(), adUnitId, request, object : InterstitialAdLoadCallback() {
override fun onAdLoaded(ad: InterstitialAd) {
btnAdLoaded?.isEnabled = true
btnLoad?.isEnabled = true
btnLoad?.text = getString(R.string.text_show)

interstitialAd = ad
}

override fun onAdFailedToLoad(adError: LoadAdError) {
btnAdFailed?.isEnabled = true
Log.e(TAG, adError.message)
interstitialAd = null
}
})
}
}

private fun randomRemovingBidResponseFromCache() {
val randomValue = random.nextInt(0, 2)
val doRemove = randomValue == 1
if (doRemove) {
Log.d("RandomAdMobRewarded", "Random removing response!")
val responseId = extras?.getString(PrebidInterstitialAdapter.EXTRA_RESPONSE_ID) ?: ""
if (responseId.isNotBlank()) {
BidResponseCache.getInstance().popBidResponse(responseId)
}
} else {
Log.d("RandomAdMobRewarded", "Without removing.")
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ class DemoItemProvider private constructor() {
private const val adMobBannerAction = R.id.action_header_bidding_to_admob_banner
private const val adMobRandomBannerAction = R.id.action_header_bidding_to_admob_random_banner
private const val adMobFlexibleBannerAction = R.id.action_header_bidding_to_admob_flexible_banner
private const val adMobInterstitialAction = R.id.action_header_bidding_to_admob_interstitial
private const val adMobInterstitialRandomAction = R.id.action_header_bidding_to_admob_interstitial_random
private const val adMobRewardedAction = R.id.action_header_bidding_to_admob_rewarded
private const val adMobRewardedRandomAction = R.id.action_header_bidding_to_admob_rewarded_random

Expand Down Expand Up @@ -977,7 +979,7 @@ class DemoItemProvider private constructor() {

// AdMob Integration
val adMobBannerTagList = listOf(Tag.ALL, Tag.ADMOB, Tag.BANNER, Tag.MOCK)
val adMobRewardedTagList = listOf(Tag.ALL, Tag.ADMOB, Tag.INTERSTITIAL, Tag.MOCK)
val adMobInterstitialTagList = listOf(Tag.ALL, Tag.ADMOB, Tag.INTERSTITIAL, Tag.MOCK)

demoList.add(
DemoItem(
Expand Down Expand Up @@ -1064,11 +1066,48 @@ class DemoItemProvider private constructor() {
)
)

demoList.add(
DemoItem(
getString(R.string.demo_bidding_admob_interstitial_adapter),
adMobInterstitialAction,
adMobInterstitialTagList,
createBannerBundle(
R.string.mock_config_id_video_interstitial_320_480,
R.string.admob_interstitial_bidding_ad_unit_id_adapter,
320, 480
)
)
)
demoList.add(
DemoItem(
getString(R.string.demo_bidding_admob_interstitial_admob),
adMobInterstitialAction,
adMobInterstitialTagList,
createBannerBundle(
R.string.prebid_config_id_no_bids,
R.string.admob_interstitial_bidding_ad_unit_id_adapter,
320, 480
)
)
)
demoList.add(
DemoItem(
getString(R.string.demo_bidding_admob_interstitial_random),
adMobInterstitialRandomAction,
adMobInterstitialTagList,
createBannerBundle(
R.string.mock_config_id_video_interstitial_320_480,
R.string.admob_interstitial_bidding_ad_unit_id_adapter,
320, 480
)
)
)

demoList.add(
DemoItem(
getString(R.string.demo_bidding_admob_rewarded_adapter),
adMobRewardedAction,
adMobRewardedTagList,
adMobInterstitialTagList,
createBannerBundle(
R.string.mock_config_id_video_rewarded_end_card_320_480,
R.string.admob_rewarded_bidding_ad_unit_id_adapter,
Expand All @@ -1080,7 +1119,7 @@ class DemoItemProvider private constructor() {
DemoItem(
getString(R.string.demo_bidding_admob_rewarded_admob),
adMobRewardedAction,
adMobRewardedTagList,
adMobInterstitialTagList,
createBannerBundle(
R.string.prebid_config_id_no_bids,
R.string.admob_rewarded_bidding_ad_unit_id_adapter,
Expand All @@ -1092,7 +1131,7 @@ class DemoItemProvider private constructor() {
DemoItem(
getString(R.string.demo_bidding_admob_rewarded_adapter_no_end_card),
adMobRewardedAction,
adMobRewardedTagList,
adMobInterstitialTagList,
createBannerBundle(
R.string.mock_config_id_video_rewarded_320_480,
R.string.admob_rewarded_bidding_ad_unit_id_adapter,
Expand All @@ -1104,7 +1143,7 @@ class DemoItemProvider private constructor() {
DemoItem(
getString(R.string.demo_bidding_admob_rewarded_random),
adMobRewardedRandomAction,
adMobRewardedTagList,
adMobInterstitialTagList,
createBannerBundle(
R.string.mock_config_id_video_rewarded_end_card_320_480,
R.string.admob_rewarded_bidding_ad_unit_id_adapter,
Expand Down Expand Up @@ -1575,7 +1614,7 @@ class DemoItemProvider private constructor() {

// AdMob Integration
val adMobBannerTagList = listOf(Tag.ALL, Tag.ADMOB, Tag.BANNER, Tag.REMOTE)
val adMobRewardedTagList = listOf(Tag.ALL, Tag.ADMOB, Tag.INTERSTITIAL, Tag.REMOTE)
val adMobInterstitialTagList = listOf(Tag.ALL, Tag.ADMOB, Tag.INTERSTITIAL, Tag.REMOTE)

demoList.add(
DemoItem(
Expand All @@ -1602,11 +1641,36 @@ class DemoItemProvider private constructor() {
)
)

demoList.add(
DemoItem(
getString(R.string.demo_bidding_admob_interstitial_adapter),
adMobInterstitialAction,
adMobInterstitialTagList,
createBannerBundle(
R.string.prebid_config_id_interstitial_320_480,
R.string.admob_interstitial_bidding_ad_unit_id_adapter,
320, 50
)
)
)
demoList.add(
DemoItem(
getString(R.string.demo_bidding_admob_interstitial_admob),
adMobInterstitialAction,
adMobInterstitialTagList,
createBannerBundle(
R.string.prebid_config_id_no_bids,
R.string.admob_interstitial_bidding_ad_unit_id_adapter,
320, 50
)
)
)

demoList.add(
DemoItem(
getString(R.string.demo_bidding_admob_rewarded_adapter),
adMobRewardedAction,
adMobRewardedTagList,
adMobInterstitialTagList,
createBannerBundle(
R.string.prebid_config_id_video_rewarded_320_480,
R.string.admob_rewarded_bidding_ad_unit_id_adapter,
Expand All @@ -1618,7 +1682,7 @@ class DemoItemProvider private constructor() {
DemoItem(
getString(R.string.demo_bidding_admob_rewarded_admob),
adMobRewardedAction,
adMobRewardedTagList,
adMobInterstitialTagList,
createBannerBundle(
R.string.prebid_config_id_no_bids,
R.string.admob_rewarded_bidding_ad_unit_id_adapter,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,22 @@
app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim"
app:popUpTo="@+id/headerBiddingFragment"/>
<action
android:id="@+id/action_header_bidding_to_admob_interstitial"
app:destination="@+id/navigation_admob_interstitial"
app:enterAnim="@anim/nav_default_enter_anim"
app:exitAnim="@anim/nav_default_exit_anim"
app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim"
app:popUpTo="@+id/headerBiddingFragment"/>
<action
android:id="@+id/action_header_bidding_to_admob_interstitial_random"
app:destination="@+id/navigation_admob_interstitial_random"
app:enterAnim="@anim/nav_default_enter_anim"
app:exitAnim="@anim/nav_default_exit_anim"
app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim"
app:popUpTo="@+id/headerBiddingFragment"/>
<action
android:id="@+id/action_header_bidding_to_admob_rewarded"
app:destination="@+id/navigation_admob_rewarded"
Expand Down Expand Up @@ -595,6 +611,12 @@
<fragment
android:id="@+id/navigation_admob_flexible_banner"
android:name="org.prebid.mobile.renderingtestapp.plugplay.bidding.admob.FlexibleAdMobBannerFragment"/>
<fragment
android:id="@+id/navigation_admob_interstitial"
android:name="org.prebid.mobile.renderingtestapp.plugplay.bidding.admob.AdMobInterstitialFragment"/>
<fragment
android:id="@+id/navigation_admob_interstitial_random"
android:name="org.prebid.mobile.renderingtestapp.plugplay.bidding.admob.AdMobInterstitialRandomFragment"/>
<fragment
android:id="@+id/navigation_admob_rewarded"
android:name="org.prebid.mobile.renderingtestapp.plugplay.bidding.admob.AdMobRewardedFragment"/>
Expand Down
5 changes: 5 additions & 0 deletions Example/PrebidInternalTestApp/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@
<string name="demo_bidding_admob_banner_300_250_ok_random">Banner 300x250 (AdMob) [OK, Random]</string>
<string name="demo_bidding_admob_flexible_banner_ok_random">Flexible banner (AdMob) [OK, Random]</string>

<string name="demo_bidding_admob_interstitial_adapter">Interstitial (AdMob) [OK, Adapter]</string>
<string name="demo_bidding_admob_interstitial_admob">Interstitial (AdMob) [noBids, AdMob ad]</string>
<string name="demo_bidding_admob_interstitial_random">Interstitial (AdMob) [OK, Random]</string>

<string name="demo_bidding_admob_rewarded_adapter">Rewarded (AdMob) [OK, Adapter]</string>
<string name="demo_bidding_admob_rewarded_adapter_no_end_card">Rewarded no EndCard (AdMob) [OK, Adapter]</string>
<string name="demo_bidding_admob_rewarded_admob">Rewarded (AdMob) [noBids, AdMob ad]</string>
Expand Down Expand Up @@ -258,6 +262,7 @@

<!--AdMob AdUnits-->
<string name="admob_banner_bidding_ad_unit_id_adapter">ca-app-pub-1875909575462531/3793078260</string>
<string name="admob_interstitial_bidding_ad_unit_id_adapter">ca-app-pub-1875909575462531/6393291067</string>
<string name="admob_rewarded_bidding_ad_unit_id_adapter">ca-app-pub-1875909575462531/1908212572</string>

<!-- Bidding configs-->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void requestInterstitialAd(

@Override
public void showInterstitial() {

interstitialController.show();
}

@Override
Expand All @@ -91,7 +91,6 @@ private InterstitialControllerListener getListener(CustomEventInterstitialListen
@Override
public void onInterstitialReadyForDisplay() {
adMobListener.onAdLoaded();
interstitialController.show();
}

@Override
Expand Down

0 comments on commit 5f3094f

Please sign in to comment.