Skip to content

Commit

Permalink
Merge pull request #76 from amirisback/develop/ump-support
Browse files Browse the repository at this point in the history
DEVELOP :: Adding show ad consent function
  • Loading branch information
amirisback committed Jun 18, 2023
2 parents 950a76a + c8e1b4e commit ce68b8a
Show file tree
Hide file tree
Showing 92 changed files with 179 additions and 108 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
79 changes: 79 additions & 0 deletions ad-admob/src/main/java/com/frogobox/admob/core/FrogoAdConsent.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package com.frogobox.admob.core

import com.google.android.ump.ConsentDebugSettings
import com.google.android.ump.ConsentInformation
import com.google.android.ump.ConsentRequestParameters
import com.google.android.ump.UserMessagingPlatform


/**
* Created by faisalamir on 26/03/22
* FrogoAdmob
* -----------------------------------------
* Name : Muhammad Faisal Amir
* E-mail : faisalamircs@gmail.com
* Github : github.com/amirisback
* -----------------------------------------
* Copyright (C) 2022 Frogobox Media Inc.
* All rights reserved
*
*/


object FrogoAdConsent {

fun showConsent(callback: IFrogoAdConsent) {

val consentInformation: ConsentInformation =
UserMessagingPlatform.getConsentInformation(callback.activity())

val debugSettings = ConsentDebugSettings.Builder(callback.activity())
.setDebugGeography(ConsentDebugSettings.DebugGeography.DEBUG_GEOGRAPHY_EEA)
.addTestDeviceHashedId("TEST-DEVICE-HASHED-ID").setForceTesting(true).build()

// Set tag for underage of consent. false means users are not underage.
val params = if (callback.isDebug()) {
ConsentRequestParameters.Builder()
.setTagForUnderAgeOfConsent(callback.isUnderAgeAd())
.setConsentDebugSettings(debugSettings)
.build()
} else {
ConsentRequestParameters.Builder()
.setTagForUnderAgeOfConsent(callback.isUnderAgeAd())
.build()
}

consentInformation.requestConsentInfoUpdate(callback.activity(), params,
{ // The consent information state was updated.
// You are now ready to check if a form is available.
if (consentInformation.isConsentFormAvailable) {
loadForm(consentInformation, callback)
}
},
{
// Handle the error.
callback.onConsentError(it)
})
}

private fun loadForm(consentInformation: ConsentInformation, callback: IFrogoAdConsent) {
// Loads a consent form. Must be called on the main thread.
UserMessagingPlatform.loadConsentForm(callback.activity(), { consentForm ->
if (consentInformation.consentStatus == ConsentInformation.ConsentStatus.REQUIRED) {
consentForm.show(callback.activity()) { formError ->
if (consentInformation.consentStatus == ConsentInformation.ConsentStatus.OBTAINED) {
// App can start requesting ads.
callback.onConsentSuccess()
}

// Handle dismissal by reloading form.
loadForm(consentInformation, callback)
}
}
}, { formError ->
// Handle the error.
callback.onConsentError(formError)
})
}

}
30 changes: 30 additions & 0 deletions ad-admob/src/main/java/com/frogobox/admob/core/IFrogoAdConsent.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.frogobox.admob.core

import android.app.Activity
import com.google.android.ump.FormError

/**
* Created by Amir on 06/18/23
* FrogoAdmob Source Code
* -----------------------------------------
* Name : Muhammad Faisal Amir
* E-mail : faisalamircs@gmail.com
* Github : github.com/amirisback
* -----------------------------------------
* Copyright (C) 2023 FrogoBox Inc.
* All rights reserved
*
*/
interface IFrogoAdConsent {

fun activity(): Activity

fun isDebug(): Boolean

fun isUnderAgeAd(): Boolean

fun onConsentSuccess()

fun onConsentError(formError: FormError)

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import androidx.appcompat.app.AppCompatActivity
import com.frogobox.admob.callback.FrogoAdmobBannerCallback
import com.frogobox.admob.callback.FrogoAdmobInterstitialCallback
import com.frogobox.admob.callback.FrogoAdmobRewardedCallback
import com.frogobox.admob.core.IFrogoAdConsent
import com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.AdView

Expand All @@ -27,7 +28,7 @@ interface AdmobDelegates {
fun setupAdmobDelegates(activity: AppCompatActivity)

// Show Ad Consent
fun showAdConsent()
fun showAdConsent(callback: IFrogoAdConsent)

// ---------------------------------------------------------------------------------------------

Expand Down Expand Up @@ -241,5 +242,4 @@ interface AdmobDelegates {
callback: FrogoAdmobRewardedCallback
)


}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.frogobox.admob.callback.FrogoAdmobInterstitialCallback
import com.frogobox.admob.callback.FrogoAdmobRewardedCallback
import com.frogobox.admob.core.FrogoAdConsent
import com.frogobox.admob.core.FrogoAdmob
import com.frogobox.admob.core.IFrogoAdConsent
import com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.AdView

Expand All @@ -32,6 +33,8 @@ class AdmobDelegatesImpl : AdmobDelegates {

private lateinit var admobDelegatesActivity: AppCompatActivity

private val adConsent = FrogoAdConsent

override fun setupAdmobDelegates(activity: AppCompatActivity) {
admobDelegatesActivity = activity
}
Expand All @@ -40,8 +43,8 @@ class AdmobDelegatesImpl : AdmobDelegates {
FrogoAdmob.setupAdmobApp(admobDelegatesActivity)
}

override fun showAdConsent() {
FrogoAdConsent.showConsent(admobDelegatesActivity)
override fun showAdConsent(callback: IFrogoAdConsent) {
adConsent.showConsent(callback)
}

// ---------------------------------------------------------------------------------------------
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
40 changes: 35 additions & 5 deletions app/src/main/java/com/frogobox/appadmob/mvvm/main/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.frogobox.appadmob.mvvm.main

import android.app.Activity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import com.frogobox.admob.core.IFrogoAdConsent
import com.frogobox.appadmob.BuildConfig
import com.frogobox.appadmob.R
import com.frogobox.appadmob.base.BaseActivity
import com.frogobox.appadmob.databinding.ActivityMainBinding
Expand All @@ -11,20 +14,46 @@ import com.frogobox.appadmob.mvvm.interstitial.InterstitialActivity
import com.frogobox.appadmob.mvvm.movie.MovieActivity
import com.frogobox.appadmob.mvvm.news.NewsActivity
import com.frogobox.appadmob.mvvm.rewarded.RewardedActivity
import com.frogobox.sdk.ext.showLogDebug
import com.frogobox.sdk.ext.startActivityExt
import com.google.android.gms.ads.AdSize
import com.google.android.ump.FormError

class MainActivity : BaseActivity<ActivityMainBinding>() {

override fun setupViewBinding(): ActivityMainBinding {
return ActivityMainBinding.inflate(layoutInflater)
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestAdmobApi()
setupButtonClick()
setupBannerAds()
override fun onCreateExt(savedInstanceState: Bundle?) {
super.onCreateExt(savedInstanceState)

showAdConsent(object : IFrogoAdConsent {

override fun activity(): Activity {
return this@MainActivity
}

override fun isDebug(): Boolean {
return BuildConfig.DEBUG
}

override fun isUnderAgeAd(): Boolean {
return false
}

override fun onConsentSuccess() {
requestAdmobApi()
setupButtonClick()
setupBannerAds()
}

override fun onConsentError(formError: FormError) {
showLogDebug("onConsentError ${formError.message}")
}

})

}

private fun setupBannerAds() {
Expand Down Expand Up @@ -78,6 +107,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
startActivityExt<AboutUsActivity>()
true
}

else -> super.onOptionsItemSelected(item)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import com.frogobox.appadmob.R
import com.frogobox.appadmob.base.BaseActivity
import com.frogobox.appadmob.databinding.ActivityRecyclerViewBinding
import com.frogobox.coreapi.ConsumeApiResponse
import com.frogobox.coreapi.movie.MovieUrl
import com.frogobox.coreapi.movie.model.TrendingMovie
import com.frogobox.coreapi.movie.response.Trending
import com.frogobox.coreutil.movie.MovieUrl
import com.frogobox.coreutil.movie.model.TrendingMovie
import com.frogobox.coreutil.movie.response.Trending
import com.frogobox.recycler.core.FrogoRecyclerNotifyListener
import com.frogobox.recycler.core.FrogoRecyclerViewListener
import com.google.android.gms.ads.AdView
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import android.widget.TextView
import com.bumptech.glide.Glide
import com.frogobox.admob.widget.FrogoAdmobViewHolder
import com.frogobox.appadmob.R
import com.frogobox.coreapi.movie.MovieUrl
import com.frogobox.coreapi.movie.model.TrendingMovie
import com.frogobox.coreutil.movie.MovieUrl
import com.frogobox.coreutil.movie.model.TrendingMovie
import com.frogobox.recycler.core.FrogoRecyclerNotifyListener

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import com.frogobox.appadmob.R
import com.frogobox.appadmob.base.BaseActivity
import com.frogobox.appadmob.databinding.ActivityRecyclerViewBinding
import com.frogobox.coreapi.ConsumeApiResponse
import com.frogobox.coreapi.news.NewsConstant
import com.frogobox.coreapi.news.NewsUrl
import com.frogobox.coreapi.news.response.ArticleResponse
import com.frogobox.coreutil.news.NewsConstant
import com.frogobox.coreutil.news.NewsUrl
import com.frogobox.coreutil.news.response.ArticleResponse
import com.frogobox.recycler.core.FrogoRecyclerNotifyListener
import com.frogobox.recycler.core.FrogoRecyclerViewListener
import com.google.android.gms.ads.AdView
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import android.widget.TextView
import com.bumptech.glide.Glide
import com.frogobox.admob.widget.FrogoAdmobViewHolder
import com.frogobox.appadmob.R
import com.frogobox.coreapi.news.model.Article
import com.frogobox.coreutil.news.model.Article
import com.frogobox.recycler.core.FrogoRecyclerNotifyListener

/**
Expand Down
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.application") version "8.0.1" apply false
id("com.android.library") version "8.0.1" apply false
id("com.android.application") version "8.0.2" apply false
id("com.android.library") version "8.0.2" apply false
id("org.jetbrains.kotlin.android") version DependencyGradle.KOTLIN_VERSION apply false
}

Expand Down
2 changes: 1 addition & 1 deletion buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ repositories {
dependencies{

// open-build-src
implementation("com.github.frogobox:open-build-src:2.1.8")
implementation("com.github.frogobox:open-build-src:2.1.9")

}
17 changes: 8 additions & 9 deletions buildSrc/src/main/kotlin/DependencyGradle.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,20 @@ object DependencyGradle {
const val KOTLIN_REFLECT = "org.jetbrains.kotlin:kotlin-reflect:$KOTLIN_VERSION"
const val COMPOSE_VERSION = Version.Androidx.composeCompiler

const val FROGO_UI_VERSION = "1.1.6"
const val FROGO_SDK_VERSION = "2.1.8"
const val FROGO_CONSUME_API_VERSION = "2.4.7"
const val FROGO_UI_VERSION = "1.1.8"
const val FROGO_SDK_VERSION = "2.2.1"
const val FROGO_CONSUME_API_VERSION = "2.4.9"
const val FROGO_RECYCLER_VIEW_VERSION = "4.3.5"

const val FROGO_UI = "com.github.frogobox:frogo-ui:$FROGO_UI_VERSION"
const val FROGO_SDK = "com.github.frogobox:frogo-sdk:$FROGO_SDK_VERSION"
const val FROGO_CONSUME_API = "com.github.frogobox:frogo-consume-api:$FROGO_CONSUME_API_VERSION"
const val FROGO_RECYCLER_VIEW = "com.github.amirisback:frogo-recycler-view:$FROGO_RECYCLER_VIEW_VERSION"

const val MODULE_LIB_FROGO_ADMOB = ":frogoadmob"

const val MODULE_LIB_FROGO_AD = ":frogoad"
const val MODULE_LIB_FROGO_AD_CORE = ":frogoadcore"
const val MODULE_LIB_FROGO_START_IO_AD = ":frogostartioad"
const val MODULE_LIB_FROGO_UNITY_AD = ":frogounityad"
const val MODULE_LIB_FROGO_ADMOB = ":${ProjectSetting.MODULE_NAME_ADMOB}"
const val MODULE_LIB_FROGO_AD = ":${ProjectSetting.MODULE_NAME_AD}"
const val MODULE_LIB_FROGO_AD_CORE = ":${ProjectSetting.MODULE_NAME_AD_CORE}"
const val MODULE_LIB_FROGO_START_IO_AD = ":${ProjectSetting.MODULE_NAME_START_IO_AD}"
const val MODULE_LIB_FROGO_UNITY_AD = ":${ProjectSetting.MODULE_NAME_UNITY_AD}"

}
8 changes: 4 additions & 4 deletions buildSrc/src/main/kotlin/ProjectSetting.kt
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ object ProjectSetting {

// ---------------------------------------------------------------------------------------------

const val MODULE_NAME_AD = "frogoad"
const val MODULE_NAME_AD_CORE = "frogoadcore"
const val MODULE_NAME_ADMOB = "frogoadmob"
const val MODULE_NAME_UNITY_AD = "frogounityad"
const val MODULE_NAME_AD = "ad-general"
const val MODULE_NAME_AD_CORE = "ad-core"
const val MODULE_NAME_ADMOB = "ad-admob"
const val MODULE_NAME_UNITY_AD = "ad-unityad"
const val MODULE_NAME_START_IO_AD = "frogostartioad"

// ---------------------------------------------------------------------------------------------
Expand Down
Loading

0 comments on commit ce68b8a

Please sign in to comment.