Skip to content

Commit

Permalink
Corrections in Internal test app (#369)
Browse files Browse the repository at this point in the history
* fix: correct mistakes in delegates #361

* fix: fix MoPub rewarded video adapter and feed example #361

* fix: small fixes in banner and interstitial examples #361

* feat: add security config for Kotlin app
  • Loading branch information
ValentinPostindustria authored Mar 2, 2022
1 parent bc5f8ab commit cd2400f
Show file tree
Hide file tree
Showing 31 changed files with 393 additions and 153 deletions.
3 changes: 2 additions & 1 deletion Example/PrebidDemoKotlin/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme">

<meta-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>

<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>

</network-security-config>
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import org.prebid.mobile.rendering.bidding.display.MediationBannerAdUnit
import com.google.android.gms.ads.AdSize as GamAdSize


class FlexibleAdMobBannerFragment : AdMobBannerFragment() {
class AdMobBannerFlexibleFragment : AdMobBannerFragment() {

companion object {
private const val TAG = "FlexibleAdMobBanner"
Expand Down Expand Up @@ -44,7 +44,7 @@ class FlexibleAdMobBannerFragment : AdMobBannerFragment() {
AdSize(width, height),
mediationUtils
)
adUnit?.addAdditionalSizes(AdSize(320, 50))
adUnit?.addAdditionalSizes(AdSize(728, 90))
adUnit?.setRefreshInterval(refreshDelay)
return adUnit
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.prebid.mobile.admob.PrebidBannerAdapter
import org.prebid.mobile.rendering.bidding.display.BidResponseCache
import kotlin.random.Random

class RandomAdMobBannerFragment : AdMobBannerFragment() {
class AdMobBannerRandomFragment : AdMobBannerFragment() {

private val random = Random.Default

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ open class AdMobInterstitialFragment : AdFragment() {
var adUnitFormat = AdUnitFormat.DISPLAY
if (isVideo) adUnitFormat = AdUnitFormat.VIDEO
adUnit = MediationInterstitialAdUnit(activity, configId, adUnitFormat, mediationUtils)
adUnit?.setMinSizePercentage(30, 30)
if (!isVideo) {
adUnit?.setMinSizePercentage(30, 30)
}
return adUnit
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,10 @@ import android.view.ViewGroup
import com.google.android.gms.ads.*
import com.google.android.gms.ads.nativead.NativeAd
import com.google.android.gms.ads.nativead.NativeAdOptions
import kotlinx.android.synthetic.main.events_admob_rewarded.*
import kotlinx.android.synthetic.main.events_admob_native.*
import kotlinx.android.synthetic.main.fragment_bidding_banner.*
import org.prebid.mobile.Host
import org.prebid.mobile.PrebidMobile
import org.prebid.mobile.admob.PrebidNativeAdapter
import org.prebid.mobile.rendering.bidding.display.MediationNativeAdUnit
import org.prebid.mobile.rendering.sdk.PrebidRenderingSettings
import org.prebid.mobile.renderingtestapp.AdFragment
import org.prebid.mobile.renderingtestapp.R
import org.prebid.mobile.renderingtestapp.databinding.ViewNativeAdBinding
Expand All @@ -32,7 +29,7 @@ class AdMobNativeFragment : AdFragment() {
protected var adUnit: MediationNativeAdUnit? = null
protected var adLoader: AdLoader? = null

override val layoutRes = R.layout.fragment_admob_rewarded
override val layoutRes = R.layout.fragment_admob_native

override fun initUi(view: View, savedInstanceState: Bundle?) {
super.initUi(view, savedInstanceState)
Expand All @@ -46,14 +43,7 @@ class AdMobNativeFragment : AdFragment() {
}

override fun initAd(): Any? {
val hostUrl = PrebidRenderingSettings.getBidServerHost().hostUrl
val accountId = PrebidRenderingSettings.getAccountId()

val host = Host.CUSTOM
host.hostUrl = hostUrl
PrebidMobile.setPrebidServerHost(host)
PrebidMobile.setPrebidServerAccountId(accountId)
PrebidMobile.setApplicationContext(requireContext())
configureOriginalPrebid()

val nativeAdOptions = NativeAdOptions
.Builder()
Expand All @@ -62,16 +52,32 @@ class AdMobNativeFragment : AdFragment() {
.Builder(requireContext(), adUnitId)
.forNativeAd { ad: NativeAd ->
btnAdLoaded?.isEnabled = true
btnLoad?.isEnabled = true
nativeAd = ad
viewContainer?.let {
createCustomView(it, nativeAd!!)
}
}
.withAdListener(object : AdListener() {

override fun onAdImpression() {
btnAdShowed?.isEnabled = true
}

override fun onAdOpened() {
btnAdOpened?.isEnabled = true
}

override fun onAdClicked() {
btnAdClicked?.isEnabled = true
}

override fun onAdFailedToLoad(adError: LoadAdError) {
btnAdFailed?.isEnabled = true
btnLoad?.isEnabled = true
Log.e(TAG, "Error: ${adError.message}")
}

})
.withNativeAdOptions(nativeAdOptions)
.build()
Expand Down Expand Up @@ -106,6 +112,8 @@ class AdMobNativeFragment : AdFragment() {
private fun resetAdEvents() {
btnAdLoaded?.isEnabled = false
btnAdFailed?.isEnabled = false
btnAdClicked?.isEnabled = false
btnAdShowed?.isEnabled = false
}

private fun createCustomView(wrapper: ViewGroup, nativeAd: NativeAd) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ import org.prebid.mobile.renderingtestapp.AdFragment
import org.prebid.mobile.renderingtestapp.R
import org.prebid.mobile.renderingtestapp.plugplay.config.AdConfiguratorDialogFragment

abstract class BaseBidRewardedFragment : AdFragment(), RewardedAdUnitListener {
abstract class BaseBidRewardedFragment : AdFragment() {

private val TAG = BaseBidRewardedFragment::class.java.simpleName

override val layoutRes = R.layout.fragment_bidding_interstitial
Expand Down Expand Up @@ -61,38 +62,6 @@ abstract class BaseBidRewardedFragment : AdFragment(), RewardedAdUnitListener {
rewardedAdUnit?.destroy()
}

override fun onAdFailed(rewardedAdUnit: RewardedAdUnit?, exception: AdException?) {
Log.d(TAG, "onAdFailed() called with: rewardedAdUnit = [$rewardedAdUnit], exception = [$exception]")
btnAdFailed?.isEnabled = true
btnLoad?.isEnabled = true
}

override fun onAdDisplayed(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onAdDisplayed() called with: rewardedAdUnit = [$rewardedAdUnit]")
btnAdDisplayed?.isEnabled = true
}

override fun onAdClosed(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onAdClosed() called with: rewardedAdUnit = [$rewardedAdUnit]")
btnAdClosed?.isEnabled = true
}

override fun onAdClicked(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onAdClicked() called with: rewardedAdUnit = [$rewardedAdUnit]")
btnAdClicked?.isEnabled = true
}

override fun onAdLoaded(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onAdLoaded() called with: reward = [${rewardedAdUnit?.userReward}]")
btnAdLoaded?.isEnabled = true
btnLoad?.setText(R.string.text_show)
btnLoad?.isEnabled = true
}

override fun onUserEarnedReward(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onUserEarnedReward() called with: reward = [${rewardedAdUnit?.userReward}]")
}

private fun handleLoadInterstitialClick() {
when (btnLoad?.text) {
getString(R.string.text_load) -> {
Expand All @@ -106,4 +75,40 @@ abstract class BaseBidRewardedFragment : AdFragment(), RewardedAdUnitListener {
}
}
}

protected fun createRewardedAdUnitListener() = object : RewardedAdUnitListener {

override fun onAdLoaded(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onAdLoaded() called with: reward = [${rewardedAdUnit?.userReward}]")
btnAdLoaded?.isEnabled = true
btnLoad?.setText(R.string.text_show)
btnLoad?.isEnabled = true
}

override fun onAdDisplayed(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onAdDisplayed() called with: rewardedAdUnit = [$rewardedAdUnit]")
btnAdDisplayed?.isEnabled = true
}

override fun onAdFailed(rewardedAdUnit: RewardedAdUnit?, exception: AdException?) {
Log.d(TAG, "onAdFailed() called with: rewardedAdUnit = [$rewardedAdUnit], exception = [$exception]")
btnAdFailed?.isEnabled = true
btnLoad?.isEnabled = true
}

override fun onAdClicked(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onAdClicked() called with: rewardedAdUnit = [$rewardedAdUnit]")
btnAdClicked?.isEnabled = true
}

override fun onAdClosed(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onAdClosed() called with: rewardedAdUnit = [$rewardedAdUnit]")
btnAdClosed?.isEnabled = true
}

override fun onUserEarnedReward(rewardedAdUnit: RewardedAdUnit?) {
Log.d(TAG, "onUserEarnedReward() called with: reward = [${rewardedAdUnit?.userReward}]")
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -103,15 +103,7 @@ class GamNativeFragment(
btnUnifiedRequestSuccess?.isEnabled = true
handleNativeAd(unifiedAd)
}
.withAdListener(object : AdListener() {
override fun onAdFailedToLoad(p0: LoadAdError) {
btnPrimaryAdRequestFailure?.isEnabled = true
}

override fun onAdClicked() {
btnAdClicked?.isEnabled = true
}
})
.withAdListener(getGamAdListener())
.build()

private fun createCustomFormatAdLoader() = AdLoader
Expand All @@ -124,11 +116,7 @@ class GamNativeFragment(
},
null
)
.withAdListener(object : AdListener() {
override fun onAdFailedToLoad(p0: LoadAdError) {
btnPrimaryAdRequestFailure?.isEnabled = true
}
})
.withAdListener(getGamAdListener())
.build()

private fun handleNativeAd(nativeAd: NativeAd?) {
Expand Down Expand Up @@ -182,6 +170,8 @@ class GamNativeFragment(
customFormatAd.performClick("cta")
btnAdClicked?.isEnabled = true
}

customFormatAd.recordImpression()
}

private fun inflateNativeAd(nativeAd: NativeAd?) {
Expand Down Expand Up @@ -247,4 +237,18 @@ class GamNativeFragment(

private fun isCustomFormatExample() = !TextUtils.isEmpty(customFormatId)

private fun getGamAdListener() = object : AdListener() {
override fun onAdFailedToLoad(p0: LoadAdError) {
btnPrimaryAdRequestFailure?.isEnabled = true
}

override fun onAdClicked() {
btnAdClicked?.isEnabled = true
}

override fun onAdImpression() {
btnAdImpression?.isEnabled = true
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class GamRewardedVideoFragment : BaseBidRewardedFragment() {
override fun initRewardedAd(adUnitId: String?, configId: String?) {
val eventHandler = GamRewardedEventHandler(activity, adUnitId)
rewardedAdUnit = RewardedAdUnit(context, configId, eventHandler)
rewardedAdUnit?.setRewardedAdUnitListener(this)
rewardedAdUnit?.setRewardedAdUnitListener(createRewardedAdUnitListener())
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ import org.prebid.mobile.renderingtestapp.utils.adapters.BaseFeedAdapter
import org.prebid.mobile.renderingtestapp.utils.adapters.MoPubNativeFeedAdapter

class MoPubNativeFeedFragment : BaseFeedFragment() {

override fun initFeedAdapter(): BaseFeedAdapter {
configureOriginalPrebid()
return MoPubNativeFeedAdapter(requireContext(), configId, adUnitId)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,7 @@ class MoPubRewardedVideoFragment: AdFragment() {
}
}

override fun configuratorMode(): AdConfiguratorDialogFragment.AdConfiguratorMode? {
return AdConfiguratorDialogFragment.AdConfiguratorMode.INTERSTITIAL
}
override fun configuratorMode() = AdConfiguratorDialogFragment.AdConfiguratorMode.INTERSTITIAL

override fun onDestroyView() {
super.onDestroyView()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ class MopubInterstitialFragment : AdFragment() {
}

override fun initAd(): Any? {
initInterstitialView(adUnitId, configId, width, height, getTitle())
initInterstitialView(adUnitId, configId, getTitle())
return mopubInterstitialAdUnit
}

Expand All @@ -95,7 +95,7 @@ class MopubInterstitialFragment : AdFragment() {
moPubInterstitial.destroy()
}

private fun initInterstitialView(adUnitId: String, configId: String, minWidthPerc: Int, minHeightPerc: Int, title: String) {
private fun initInterstitialView(adUnitId: String, configId: String, title: String) {
moPubInterstitial = MoPubInterstitial(requireActivity(), adUnitId)
moPubInterstitial.interstitialAdListener = mListener

Expand All @@ -108,16 +108,17 @@ class MopubInterstitialFragment : AdFragment() {
AdUnitFormat.VIDEO,
mediationUtils
)
}
else {
} else {
MediationInterstitialAdUnit(
requireContext(),
configId,
AdUnitFormat.DISPLAY,
mediationUtils
)
}
mopubInterstitialAdUnit.setMinSizePercentage(30, 30)
if (!isVideo) {
mopubInterstitialAdUnit.setMinSizePercentage(width, height)
}
}

private fun handleLoadButtonClick() {
Expand Down
Loading

0 comments on commit cd2400f

Please sign in to comment.