frogo-admob

Introduction: Frogo Admob - Library Helper For Implementation All Admob Function
More: Author   ReportBugs   OfficialWebsite   
Tags:

ScreenShoot Apps

  • Reason Deprecated, Merge library become single library
  • Please Using This : deltadox-android

    #

ScreenShoot Apps

About This Project

JitPack Android CI Scan with Detekt Medium Badge

  • Available on Google Dev Library - Click Here
  • Privacy Policy Click Here
  • LICENSE Click Here
  • Helper for activating admob
  • Example Source Code For Call Method Show Admob
  • Calling method on Inheritance Class
  • Implement all Admob Version
  • Jetpack Compose Function (Experimental)
  • Don't forget implement frogo-sdk Click Here

Note For Jitpack Build

  • Red : Failed (So don't use that version / Using previous version)
  • Green : Success / Pass (Use It)

ScreenShot Apps

Banner and Interstitial RecyclerView with Banner
User Messaging Platform Rewarded Apps

Version Release

$version_release = 5.3.8

// Suport Library
$admob_version = 23.3.0 // https://developers.google.com/admob/android/sdk
$unity_ad_version = 4.12.1 // https://developers.google.com/admob/android/mediation/unity#step_3_import_the_unity_ads_sdk_and_adapter

What's New??

* Enhance Performance *
* Refactoring Code *
* Update Admob Library Version *
* Deprecated Code *

How To Use / Implement This Project

Step 1. Add the JitPack repository to your build file

// Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

// Add it in your root build.gradle.kts at the end of repositories:

allprojects {
    repositories {
        ...
        maven("https://jitpack.io")
    }
}

Step 2. Add the dependency

dependencies {
    // library google admob (Required)
    implementation 'com.google.android.gms:play-services-ads:${admob_version}'

    // library unity ads (Required)
    implementation 'com.unity3d.ads:unity-ads:${unity_ad_version}'

    // library frogo-admob (Required - Recomended)
    implementation 'com.github.amirisback:frogo-admob:5.3.8'

    // -----------------------------------------------------------------------------------------
    // For Single Library Patch 

    // library frogo-admob (Admob Only)
    implementation 'com.github.amirisback.frogo-admob:ad-admob:5.3.8'

    // library frogo-admob (Unity Ads Only)
    implementation 'com.github.amirisback.frogo-admob:ad-unityad:5.3.8'
}

dependencies {
    // library google admob (Required)
    implementation("com.google.android.gms:play-services-ads:${admob_version}")

    // library unity ads (Required)
    implementation("com.unity3d.ads:unity-ads:${unity_ad_version}")

    // library frogo-admob (Required - Recomended)
    implementation("com.github.amirisback:frogo-admob:5.3.8")

    // -----------------------------------------------------------------------------------------
    // For Single Library Patch

    // library frogo-admob (Admob Only)
    implementation("com.github.amirisback.frogo-admob:ad-admob:5.3.8")

    // library frogo-admob (Unity Ads Only)
    implementation("com.github.amirisback.frogo-admob:ad-unityad:5.3.8")

}

[versions]
admob = "23.3.0"
unityad = "4.12.1"
frogoadmob = "5.3.8"

[libraries]
admob = { group = "com.google.android.gms", name = "play-services-ads", version.ref = "admob" }
unityads = { group = "com.unity3d.ads", name = "unity-ads", version.ref = "unityad" }

frogo-admob = { group = "com.github.amirisback", name = "frogo-admob", version.ref = "frogoadmob" }
frogo-admob-admob = { group = "com.github.amirisback.frogo-admob", name = "ad-admob", version.ref = "frogoadmob" }
frogo-admob-unityads = { group = "com.github.amirisback.frogo-admob", name = "ad-unityad", version.ref = "frogoadmob" }

dependencies {
    // library google admob (Required)
    implementation(libs.admob)

    // library unity ads (Required)
    implementation(libs.unityads)

    // library frogo-admob
    implementation(libs.frogo.admob)

    // -----------------------------------------------------------------------------------------
    // For Single Library Patch

    // library frogo-admob (Admob Only)
    implementation(libs.frogo.admob.admob)

    // library frogo-admob (Unity Ads Only)
    implementation(libs.frogo.admob.unityads)
}

Step 3. Adding meta-data on AndroidManifest.xml

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>

Step 4. Setup Admob and Showing Ads

XML

Click for detail! #### Setup Ads Using Server kotlin class <YourActivity> : FrogoAdActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) requestAdmobApi() } private fun requestAdmobApi() { val baseUrl = "https://raw.githubusercontent.com/amirisback/frogo-admob/master/app/src/main/assets/" val frogoAdmobRepository = FrogoAdmobRepository(baseUrl) frogoAdmobRepository.usingClient() frogoAdmobRepository.getFrogoAdmobId( "admob_id", object : FrogoAdmobApiResponse<FrogoAdmobId> { override fun onSuccess(data: FrogoAdmobId) { runOnUiThread { showLogDebug(data.appId) showLogDebug(data.bannerID[0]) showLogDebug(data.interstitialID[0]) showLogDebug(data.testAdmobAppId) showLogDebug(data.testAdmobBanner) showLogDebug(data.testAdmobInterstitial) } } override fun onFailed(statusCode: Int, errorMessage: String?) { runOnUiThread { showLogDebug(errorMessage) } } override fun onShowProgress() { } override fun onHideProgress() { } }) } } #### Showing Ads kotlin class <YourActivity> : FrogoAdmobActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setupButtonClick() setupBannerAds() } ... ... ... private fun setupBannerAds() { showBanner(binding.adsXml.adsPhoneTabSpecialSmartBanner) showBannerContainer( getString(R.string.admob_banner), AdSize.SMART_BANNER, binding.includeAdsView.frogoAdsBanner ) } private fun setupButtonClick() { binding.apply { btnInterstitial.setOnClickListener { // No Using Callback showAdInterstitial(getString(R.string.admob_interstitial)) // With Callback showAdInterstitial( getString(R.string.admob_interstitial), object : IFrogoInterstitial { override fun onAdDismissed(message: String) { frogoStartActivity<MainActivity>() finish() } override fun onAdFailedToLoad(errorMessage: String) { frogoStartActivity<MainActivity>() finish() } override fun onAdFailedToShow(errorMessage: String) { frogoStartActivity<MainActivity>() finish() } override fun onAdLoaded(message: String) {} override fun onAdShowed(message: String) {} override fun onAdNotReady(message: String) { frogoStartActivity<MainActivity>() finish() } } ) } btnRewarded.setOnClickListener { showAdRewarded(getString(R.string.admob_rewarded), object : FrogoAdmobRewardedCallback { override fun onUserEarnedReward(rewardItem: RewardItem) { // TODO("User Get Reward") } override fun onAdClosed() { // TODO("Not yet implemented") } override fun onAdFailedToLoad() { // TODO("Not yet implemented") } override fun onAdFailedToShow() { // TODO("Not yet implemented") } override fun onAdLoaded() { // TODO("Not yet implemented") } override fun onAdNotReady(message: String) { // TODO("Not yet implemented") } }) } btnRewardedInterstitial.setOnClickListener { showAdRewardedInterstitial(getString(R.string.admob_rewarded_interstitial), object : FrogoAdmobRewardedCallback { override fun onUserEarnedReward(rewardItem: RewardItem) { // TODO("User Get Reward") } override fun onAdClosed() { // TODO("Not yet implemented") } override fun onAdFailedToLoad() { // TODO("Not yet implemented") } override fun onAdFailedToShow() { // TODO("Not yet implemented") } override fun onAdLoaded() { // TODO("Not yet implemented") } override fun onAdNotReady(message: String) { // TODO("Not yet implemented") } }) } } } }

Jetpack Compose

Click for detail! #### ComposeActivity kotlin class ComposeActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { FrogoAdmobTheme { // A surface container using the 'background' color from the theme Surface(color = MaterialTheme.colors.background) { Column { FrogoAdmobBannerView( mAdUnitID = getString(R.string.admob_banner), mAdSize = adsize_banner ) } } } } } }

Hybrid (Jetpack Compose + XML)

Click for detail! #### XML Layout xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mvvm.main.MainActivity"> <androidx.compose.ui.platform.ComposeView android:id="@+id/compose_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/include_ads_view"/> <include android:id="@+id/include_ads_view" layout="@layout/ads_phone_tab_special_smart_banner" /> </RelativeLayout> #### Kotlin Class kotlin class HybridActivity : BaseActivity<ActivityHybridBinding>() { override fun setupViewBinding(): ActivityHybridBinding { return ActivityHybridBinding.inflate(layoutInflater) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding.apply { composeView.setContent { Greeting("FrogoAdmob") } setupShowAdsBanner(includeAdsView.adsPhoneTabSpecialSmartBanner) } } @Composable fun Greeting(name: String) { Text(text = "Hello $name!") } }

Java Sample Implementation

  • You can follow sample below or go to Full Sample Code Full Code
Click for detail! ### Setup Java BaseActivity java public abstract class <Your BaseJavaActivity> extends FrogoAdmobActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } } ### Setup Your Activity java public class MainJavaActivity extends BaseJavaActivity { private ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); showBanner(binding.includeAdsView.adsPhoneTabSpecialSmartBanner); hideButton(); setupButtonClick(); } ... ... ... private void setupButtonClick() { binding.btnInterstitial.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showAdInterstitial(getString(R.string.admob_interstitial)); } }); binding.btnRewarded.setOnClickListener(view -> showAdRewarded(getString(R.string.admob_rewarded), new FrogoAdmobRewardedCallback() { @Override public void onUserEarnedReward(@NonNull RewardItem rewardItem) { } @Override public void onAdClosed() { } @Override public void onAdFailedToLoad() { } @Override public void onAdFailedToShow() { } @Override public void onAdLoaded() { } @Override public void onAdNotReady(@NonNull String message) { } })); binding.btnRewardedInterstitial.setOnClickListener(view -> showAdRewardedInterstitial(getString(R.string.admob_rewarded_interstitial), new FrogoAdmobRewardedCallback() { @Override public void onUserEarnedReward(@NonNull RewardItem rewardItem) { } @Override public void onAdClosed() { } @Override public void onAdFailedToLoad() { } @Override public void onAdFailedToShow() { } @Override public void onAdLoaded() { } @Override public void onAdNotReady(@NonNull String message) { } })); } }

List Function FrogoAdmobActivity and FrogoSdkAdmobActivity

// Show Ad Consent
fun showAdConsent()

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

// Show Banner Ads
fun showAdBanner(mAdView: AdView)

// Show Banner Ads with timeout millisecond
fun showAdBanner(mAdView: AdView, timeoutMilliSecond: Int)

// Show Banner Ads with keyword
fun showAdBanner(mAdView: AdView, keyword: List<String>)

// Show Banner Ads with timeout millisecond and keyword
fun showAdBanner(mAdView: AdView, timeoutMilliSecond: Int, keyword: List<String>)

// Show Banner Ads  with timeout millisecond and keyword and callback
fun showAdBanner(
    mAdView: AdView,
    timeoutMilliSecond: Int,
    keyword: List<String>,
    callback: FrogoAdmobBannerCallback
)

// Show Banner Ads with callback
fun showAdBanner(mAdView: AdView, callback: FrogoAdmobBannerCallback)

// Show Banner Ads  with timeout millisecond and callback
fun showAdBanner(mAdView: AdView, timeoutMilliSecond: Int, callback: FrogoAdmobBannerCallback)

// Show Banner Ads  with and keyword and callback
fun showAdBanner(mAdView: AdView, keyword: List<String>, callback: FrogoAdmobBannerCallback)

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

// Show Banner Ads with container
fun showAdBannerContainer(
    bannerAdUnitId: String,
    mAdsSize: AdSize,
    container: RelativeLayout,
)

// Show Banner Ads with container and timeout millisecond
fun showAdBannerContainer(
    bannerAdUnitId: String,
    mAdsSize: AdSize,
    container: RelativeLayout,
    timeoutMilliSecond: Int,
)

// Show Banner Ads with container and keyword
fun showAdBannerContainer(
    bannerAdUnitId: String,
    mAdsSize: AdSize,
    container: RelativeLayout,
    keyword: List<String>,
)

// Show Banner Ads with container and keyword and timeout millisecond
fun showAdBannerContainer(
    bannerAdUnitId: String,
    mAdsSize: AdSize,
    container: RelativeLayout,
    timeoutMilliSecond: Int,
    keyword: List<String>
)

// Show Banner Ads with container and callback
fun showAdBannerContainer(
    bannerAdUnitId: String,
    mAdsSize: AdSize,
    container: RelativeLayout,
    callback: FrogoAdmobBannerCallback
)

// Show Banner Ads with container and timeout millisecond and callback
fun showAdBannerContainer(
    bannerAdUnitId: String,
    mAdsSize: AdSize,
    container: RelativeLayout,
    timeoutMilliSecond: Int,
    callback: FrogoAdmobBannerCallback
)

// Show Banner Ads with container and keyword and callback
fun showAdBannerContainer(
    bannerAdUnitId: String,
    mAdsSize: AdSize,
    container: RelativeLayout,
    keyword: List<String>,
    callback: FrogoAdmobBannerCallback
)

// Show Banner Ads with container and timeout millisecond and keyword and callback
fun showAdBannerContainer(
    bannerAdUnitId: String,
    mAdsSize: AdSize,
    container: RelativeLayout,
    timeoutMilliSecond: Int,
    keyword: List<String>,
    callback: FrogoAdmobBannerCallback
)

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

// Show Interstitial Ads with timeout millisecond, keyword, callback
fun showAdInterstitial(
    interstitialAdUnitId: String,
    timeoutMilliSecond: Int,
    keyword: List<String>,
    callback: FrogoAdmobInterstitialCallback
)

// Show Interstitial Ads with timeout millisecond and keyword
fun showAdInterstitial(
    interstitialAdUnitId: String,
    timeoutMilliSecond: Int,
    keyword: List<String>
)

// Show Interstitial Ads with timeout millisecond
fun showAdInterstitial(
    interstitialAdUnitId: String,
    timeoutMilliSecond: Int
)

// Show Interstitial Ads with keyword
fun showAdInterstitial(
    interstitialAdUnitId: String,
    keyword: List<String>
)

// Show Interstitial Ads
fun showAdInterstitial(interstitialAdUnitId: String)

// Show Interstitial Ads with timeout milliSecond and callback
fun showAdInterstitial(
    interstitialAdUnitId: String,
    timeoutMilliSecond: Int,
    callback: FrogoAdmobInterstitialCallback
)

// Show Interstitial Ads with keyword and callback
fun showAdInterstitial(
    interstitialAdUnitId: String,
    keyword: List<String>,
    callback: FrogoAdmobInterstitialCallback
)

// Show Interstitial Ads with callback
fun showAdInterstitial(
    interstitialAdUnitId: String,
    callback: FrogoAdmobInterstitialCallback
)

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

// Show Rewarded Ads
fun showAdRewarded(mAdUnitIdRewarded: String, callback: FrogoAdmobRewardedCallback)

// Show Rewarded Ads with timeout millisecond
fun showAdRewarded(
    mAdUnitIdRewarded: String,
    timeoutMilliSecond: Int,
    callback: FrogoAdmobRewardedCallback
)

// Show Rewarded Ads with keyword
fun showAdRewarded(
    mAdUnitIdRewarded: String,
    keyword: List<String>,
    callback: FrogoAdmobRewardedCallback
)

// Show Rewarded Ads with timeout millisecond and keyword
fun showAdRewarded(
    mAdUnitIdRewarded: String,
    timeoutMilliSecond: Int,
    keyword: List<String>,
    callback: FrogoAdmobRewardedCallback
)

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

// Show Rewarded Interstitial Ads
fun showAdRewardedInterstitial(
    mAdUnitIdRewardedInterstitial: String,
    callback: FrogoAdmobRewardedCallback
)

// Show Rewarded Interstitial Ads with timeout millisecond
fun showAdRewardedInterstitial(
    mAdUnitIdRewardedInterstitial: String,
    timeoutMilliSecond: Int,
    callback: FrogoAdmobRewardedCallback
)

// Show Rewarded Interstitial Ads with keyword
fun showAdRewardedInterstitial(
    mAdUnitIdRewardedInterstitial: String,
    keyword: List<String>,
    callback: FrogoAdmobRewardedCallback
)

// Show Rewarded Interstitial Ads with timeout millisecond and keyword
fun showAdRewardedInterstitial(
    mAdUnitIdRewardedInterstitial: String,
    timeoutMilliSecond: Int,
    keyword: List<String>,
    callback: FrogoAdmobRewardedCallback
)

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

// Unity Ads

fun setupUnityAdApp(
    testMode: Boolean,
    unityGameId: String
)

fun setupUnityAdApp(
    testMode: Boolean,
    unityGameId: String,
    callback: IFrogoUnityAdInitialization
)

fun showUnityAdInterstitial(
    adInterstitialUnitId: String
)

fun showUnityAdInterstitial(
    adInterstitialUnitId: String,
    callback: IFrogoUnityAdInterstitial
)

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

fun showAdmobXUnityAdInterstitial(
    admobInterstitialId: String,
    unityInterstitialId: String,
    callback: IFrogoMixedAdsInterstitial
)

fun showUnityXAdmobAdInterstitial(
    admobInterstitialId: String,
    unityInterstitialId: String,
    callback: IFrogoMixedAdsInterstitial
)

Jetpack Compose Element

Variable

val adsize_banner: AdSize = AdSize.BANNER
val adsize_full_banner: AdSize = AdSize.FULL_BANNER
val adsize_large_banner: AdSize = AdSize.LARGE_BANNER
val adsize_smart_banner: AdSize = AdSize.SMART_BANNER
val adsize_medium_rectangle: AdSize = AdSize.MEDIUM_RECTANGLE
val adsize_wide_skycraper: AdSize = AdSize.WIDE_SKYSCRAPER

Function


@Composable
fun FrogoAdmobBannerView(
    mAdUnitID: String,
    mAdSize: AdSize,
    modifier: Modifier = Modifier
) {
    AndroidView(
        modifier = modifier.fillMaxWidth(),
        factory = { context ->
            showLogDebug("FrogoAdmobBannerView")
            AdView(context).apply {
                adSize = mAdSize
                adUnitId = mAdUnitID
                loadAd(AdRequest.Builder().build())
            }
        }
    )
}

User Messaging Platform (UMP)

How to use

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 onNotUsingAdConsent() {
        // On Not Using Ad Consent
    }

    override fun onConsentSuccess() {
        // On Consent Success
    }

    override fun onConsentError(formError: FormError) {
        // On Consent Error
    }

})

Notes

Allert

Update

>> on version 3.0.0
- import com.frogobox.admob.core.FrogoRvConstant
- import com.frogobox.admob.core.admob.FrogoAdmob
- import com.frogobox.admob.core.admob.FrogoAdmobActivity
- import com.frogobox.admob.core.FrogoAdmobViewHolder
- import com.frogobox.admob.core.FrogoAdmobViewAdapter
- import com.frogobox.admob.core.AdmobViewHolder

>> on version 4.0.0
- import com.frogobox.admob.core.FrogoRvConstant
- import com.frogobox.admob.core.FrogoAdmob
- import com.frogobox.admob.ui.FrogoAdmobActivity
- import com.frogobox.admob.widget.FrogoAdmobViewHolder
- import com.frogobox.admob.widget.FrogoAdmobViewAdapter
- import com.frogobox.admob.widget.AdmobViewHolder

>> on Version 4.2.0
- Add FrogoSdkAdmobActivity
- New Setup Implementation
- Fixing Bug : ShowBanner, ShowInterstitial, ShowRewarded

>> on Version 4.2.6 +
- Add Unity Ads
- Basic Interstitial

Test Ads From Google

// Declaration admob id for debug
def debugAdmobAppId = "ca-app-pub-3940256099942544~3347511713"
def debugAdmobBanner = "ca-app-pub-3940256099942544/6300978111"
def debugAdmobInterstitial = "ca-app-pub-3940256099942544/1033173712"
def debugAdmobInterstitialVideo = "ca-app-pub-3940256099942544/8691691433"
def debugAdmobRewarded = "ca-app-pub-3940256099942544/5224354917"
def debugAdmobRewardedInterstitial = "ca-app-pub-3940256099942544/5354046379"
def debugAdmobNativeAdvanced = "ca-app-pub-3940256099942544/2247696110"
def debugAdmobNativeAdvancedVideo = "ca-app-pub-3940256099942544/1044960115"

Colaborator

Very open to anyone, I'll write your name under this, please contribute by sending an email to me

  • Mail To faisalamircs@gmail.com
  • Subject : Github [Github-Username-Account] [Language] _ [Repository-Name]
  • Example : Github_amirisback_kotlin_admob-helper-implementation

Name Of Contribute

  • Muhammad Faisal Amir
  • Waiting List
  • Waiting List

Waiting for your contribute

Source

Attention !!!

Please enjoy and don't forget fork and give a star

  • Don't Forget Follow My Github Account

ScreenShoot Apps

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools