{"id":13540839,"url":"https://github.com/amirisback/frogo-admob","last_synced_at":"2025-07-14T05:35:47.417Z","repository":{"id":37301633,"uuid":"218685692","full_name":"amirisback/frogo-admob","owner":"amirisback","description":"Library Helper For Implementation All Admob Function","archived":false,"fork":false,"pushed_at":"2024-11-18T06:48:39.000Z","size":3437,"stargazers_count":95,"open_issues_count":1,"forks_count":28,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-07T11:09:56.147Z","etag":null,"topics":["adapter","admob","admob-demo","admob-helper","admob-plugin","android","android-ko","gms","monetization","playstore","recyclerview","recyclerview-adapter"],"latest_commit_sha":null,"homepage":"https://faisalamircs.medium.com/dapatkan-penghasilan-dari-aplikasi-androidmu-di-play-store-dengan-admob-helper-f21288de5071","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amirisback.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"amirisback","patreon":null,"open_collective":null,"ko_fi":"amirisback","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://saweria.co/amirisback"}},"created_at":"2019-10-31T04:41:29.000Z","updated_at":"2025-06-11T01:44:32.000Z","dependencies_parsed_at":"2023-02-19T15:45:19.846Z","dependency_job_id":"1ed108d9-7ef0-4b8a-a22a-eefb3c0e5d82","html_url":"https://github.com/amirisback/frogo-admob","commit_stats":{"total_commits":312,"total_committers":1,"mean_commits":312.0,"dds":0.0,"last_synced_commit":"c2fb71f1a608750d73756f7f383b336de8da6bb3"},"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/amirisback/frogo-admob","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirisback%2Ffrogo-admob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirisback%2Ffrogo-admob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirisback%2Ffrogo-admob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirisback%2Ffrogo-admob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amirisback","download_url":"https://codeload.github.com/amirisback/frogo-admob/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amirisback%2Ffrogo-admob/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265205667,"owners_count":23727509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adapter","admob","admob-demo","admob-helper","admob-plugin","android","android-ko","gms","monetization","playstore","recyclerview","recyclerview-adapter"],"created_at":"2024-08-01T10:00:33.701Z","updated_at":"2025-07-14T05:35:47.386Z","avatar_url":"https://github.com/amirisback.png","language":"Kotlin","funding_links":["https://github.com/sponsors/amirisback","https://ko-fi.com/amirisback","https://saweria.co/amirisback"],"categories":["Android Library"],"sub_categories":["Frogo Android Library"],"readme":"![ScreenShoot Apps](https://raw.githubusercontent.com/amirisback/amirisback/master/docs/image/deprecated.png?raw=true)\n## DEPRECATED\n- Reason Deprecated, Merge library become single library\n- Please Using This : [deltadox-android](https://github.com/deltadox/deltadox-android)\n##\n\n![ScreenShoot Apps](https://raw.githubusercontent.com/amirisback/frogo-admob/master/docs/image/ss_banner.png?raw=true)\n\n## About This Project\n[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-frogo--admob-brightgreen.svg?style=flat-square)](https://android-arsenal.com/details/1/8251)\n[![JitPack](https://jitpack.io/v/amirisback/frogo-admob.svg?style=flat-square)](https://jitpack.io/#amirisback/frogo-admob)\n[![Android CI](https://github.com/amirisback/frogo-admob/actions/workflows/android-ci.yml/badge.svg)](https://github.com/amirisback/frogo-admob/actions/workflows/android-ci.yml)\n[![Scan with Detekt](https://github.com/amirisback/frogo-admob/actions/workflows/detekt-analysis.yml/badge.svg)](https://github.com/amirisback/frogo-admob/actions/workflows/detekt-analysis.yml)\n[![Medium Badge](https://img.shields.io/badge/-faisalamircs-black?style=flat-square\u0026logo=Medium\u0026logoColor=white\u0026link=https://medium.com/@faisalamircs)](https://medium.com/@faisalamircs/dapatkan-penghasilan-dari-aplikasi-androidmu-di-play-store-dengan-admob-helper-f21288de5071)\n- Available on Google Dev Library - [Click Here](https://devlibrary.withgoogle.com/products/android/repos/amirisback-frogo-admob)\n- Privacy Policy [Click Here](https://github.com/amirisback/frogo-admob/blob/master/PRIVACY-POLICY.md)\n- LICENSE [Click Here](https://github.com/amirisback/frogo-admob/blob/master/LICENSE)\n- Helper for activating admob\n- Example Source Code For Call Method Show Admob\n- Calling method on Inheritance Class\n- Implement all Admob Version\n- Jetpack Compose Function (Experimental)\n- Don't forget implement frogo-sdk [Click Here](https://github.com/frogobox/frogo-sdk)\n\n## Note For Jitpack Build\n- Red : Failed (So don't use that version / Using previous version)\n- Green : Success / Pass (Use It)\n\n## ScreenShot Apps\n|                      Banner and Interstitial                       |                      RecyclerView with Banner                      |\n|:------------------------------------------------------------------:|:------------------------------------------------------------------:|\n| \u003cimg width=\"200px\" height=\"360px\" src=\"docs/image/ss_image_1.png\"\u003e | \u003cimg width=\"200px\" height=\"360px\" src=\"docs/image/ss_image_2.png\"\u003e |\n\n|                    User Messaging Platform                     |                           Rewarded Apps                            |\n|:--------------------------------------------------------------:|:------------------------------------------------------------------:|\n| \u003cimg width=\"200px\" height=\"360px\" src=\"docs/image/ss-ump.jpg\"\u003e | \u003cimg width=\"200px\" height=\"360px\" src=\"docs/image/ss_image_3.png\"\u003e |\n\n## Version Release\n\n    $version_release = 5.3.8\n\n    // Suport Library\n    $admob_version = 23.3.0 // https://developers.google.com/admob/android/sdk\n    $unity_ad_version = 4.12.1 // https://developers.google.com/admob/android/mediation/unity#step_3_import_the_unity_ads_sdk_and_adapter\n\nWhat's New??\n\n    * Enhance Performance *\n    * Refactoring Code *\n    * Update Admob Library Version *\n    * Deprecated Code *\n\n## How To Use / Implement This Project\n### Step 1. Add the JitPack repository to your build file\n\n#### \u003cOption 1\u003e Groovy Gradle\n\n```groovy\n// Add it in your root build.gradle at the end of repositories:\n\nallprojects {\n    repositories {\n        ...\n        maven { url 'https://jitpack.io' }\n    }\n}\n```\n\n#### \u003cOption 2\u003e Kotlin DSL Gradle`\n\n```kotlin\n// Add it in your root build.gradle.kts at the end of repositories:\n\nallprojects {\n    repositories {\n        ...\n        maven(\"https://jitpack.io\")\n    }\n}\n```\n\n### Step 2. Add the dependency\n\n#### \u003cOption 1\u003e Groovy\n```groovy\ndependencies {\n    // library google admob (Required)\n    implementation 'com.google.android.gms:play-services-ads:${admob_version}'\n\n    // library unity ads (Required)\n    implementation 'com.unity3d.ads:unity-ads:${unity_ad_version}'\n\n    // library frogo-admob (Required - Recomended)\n    implementation 'com.github.amirisback:frogo-admob:5.3.8'\n\n    // -----------------------------------------------------------------------------------------\n    // For Single Library Patch \n\n    // library frogo-admob (Admob Only)\n    implementation 'com.github.amirisback.frogo-admob:ad-admob:5.3.8'\n\n    // library frogo-admob (Unity Ads Only)\n    implementation 'com.github.amirisback.frogo-admob:ad-unityad:5.3.8'\n}\n```\n\n#### \u003cOption 2\u003e Kotlin DSL\n```kotlin\ndependencies {\n    // library google admob (Required)\n    implementation(\"com.google.android.gms:play-services-ads:${admob_version}\")\n\n    // library unity ads (Required)\n    implementation(\"com.unity3d.ads:unity-ads:${unity_ad_version}\")\n\n    // library frogo-admob (Required - Recomended)\n    implementation(\"com.github.amirisback:frogo-admob:5.3.8\")\n\n    // -----------------------------------------------------------------------------------------\n    // For Single Library Patch\n\n    // library frogo-admob (Admob Only)\n    implementation(\"com.github.amirisback.frogo-admob:ad-admob:5.3.8\")\n\n    // library frogo-admob (Unity Ads Only)\n    implementation(\"com.github.amirisback.frogo-admob:ad-unityad:5.3.8\")\n\n}\n```\n\n#### \u003cOption 3\u003e Kotlin DSL\n```toml\n[versions]\nadmob = \"23.3.0\"\nunityad = \"4.12.1\"\nfrogoadmob = \"5.3.8\"\n\n[libraries]\nadmob = { group = \"com.google.android.gms\", name = \"play-services-ads\", version.ref = \"admob\" }\nunityads = { group = \"com.unity3d.ads\", name = \"unity-ads\", version.ref = \"unityad\" }\n\nfrogo-admob = { group = \"com.github.amirisback\", name = \"frogo-admob\", version.ref = \"frogoadmob\" }\nfrogo-admob-admob = { group = \"com.github.amirisback.frogo-admob\", name = \"ad-admob\", version.ref = \"frogoadmob\" }\nfrogo-admob-unityads = { group = \"com.github.amirisback.frogo-admob\", name = \"ad-unityad\", version.ref = \"frogoadmob\" }\n\ndependencies {\n    // library google admob (Required)\n    implementation(libs.admob)\n    \n    // library unity ads (Required)\n    implementation(libs.unityads)\n\n    // library frogo-admob\n    implementation(libs.frogo.admob)\n\n    // -----------------------------------------------------------------------------------------\n    // For Single Library Patch\n    \n    // library frogo-admob (Admob Only)\n    implementation(libs.frogo.admob.admob)\n    \n    // library frogo-admob (Unity Ads Only)\n    implementation(libs.frogo.admob.unityads)\n}\n```\n\t\n### Step 3. Adding meta-data on AndroidManifest.xml\n```xml\n\u003cmanifest\u003e\n    \u003capplication\u003e\n        \u003c!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 --\u003e\n        \u003cmeta-data\n            android:name=\"com.google.android.gms.ads.APPLICATION_ID\"\n            android:value=\"ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy\"/\u003e\n    \u003c/application\u003e\n\u003c/manifest\u003e\n```\n\t\n### Step 4. Setup Admob and Showing Ads\n\n#### XML\n\u003cdetails\u003e\n  \u003csummary\u003eClick for detail!\u003c/summary\u003e\n\n#### Setup Ads Using Server\n```kotlin\nclass \u003cYourActivity\u003e : FrogoAdActivity() {\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        requestAdmobApi()\n    }\n\n    private fun requestAdmobApi() {\n        val baseUrl = \"https://raw.githubusercontent.com/amirisback/frogo-admob/master/app/src/main/assets/\"\n        val frogoAdmobRepository = FrogoAdmobRepository(baseUrl)\n        frogoAdmobRepository.usingClient()\n        frogoAdmobRepository.getFrogoAdmobId(\n            \"admob_id\",\n            object : FrogoAdmobApiResponse\u003cFrogoAdmobId\u003e {\n                override fun onSuccess(data: FrogoAdmobId) {\n                    runOnUiThread {\n                        showLogDebug(data.appId)\n                        showLogDebug(data.bannerID[0])\n                        showLogDebug(data.interstitialID[0])\n                        showLogDebug(data.testAdmobAppId)\n                        showLogDebug(data.testAdmobBanner)\n                        showLogDebug(data.testAdmobInterstitial)\n                    }\n                }\n\n                override fun onFailed(statusCode: Int, errorMessage: String?) {\n                    runOnUiThread {\n                        showLogDebug(errorMessage)\n                    }\n                }\n\n                override fun onShowProgress() {\n                }\n\n                override fun onHideProgress() {\n                }\n            })\n    }\n\n}\n```\n\n#### Showing Ads\n\n```kotlin\nclass \u003cYourActivity\u003e : FrogoAdmobActivity() {\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setupButtonClick()\n        setupBannerAds()\n    }\n\n    ...\n    ...\n    ...\n\n    private fun setupBannerAds() {\n        showBanner(binding.adsXml.adsPhoneTabSpecialSmartBanner)\n        showBannerContainer(\n            getString(R.string.admob_banner),\n            AdSize.SMART_BANNER,\n            binding.includeAdsView.frogoAdsBanner\n        )\n    }\n\n    private fun setupButtonClick() {\n\n        binding.apply {\n\n            btnInterstitial.setOnClickListener {\n\n                // No Using Callback\n                showAdInterstitial(getString(R.string.admob_interstitial))\n\n                // With Callback\n                showAdInterstitial(\n                    getString(R.string.admob_interstitial),\n                    object : IFrogoInterstitial {\n\n                        override fun onAdDismissed(message: String) {\n                            frogoStartActivity\u003cMainActivity\u003e()\n                            finish()\n                        }\n\n                        override fun onAdFailedToLoad(errorMessage: String) {\n                            frogoStartActivity\u003cMainActivity\u003e()\n                            finish()\n                        }\n\n                        override fun onAdFailedToShow(errorMessage: String) {\n                            frogoStartActivity\u003cMainActivity\u003e()\n                            finish()\n                        }\n\n                        override fun onAdLoaded(message: String) {}\n\n                        override fun onAdShowed(message: String) {}\n\n                        override fun onAdNotReady(message: String) {\n                            frogoStartActivity\u003cMainActivity\u003e()\n                            finish()\n                        }\n\n                    }\n                )\n\n            }\n\n            btnRewarded.setOnClickListener {\n                showAdRewarded(getString(R.string.admob_rewarded), object : FrogoAdmobRewardedCallback {\n                    override fun onUserEarnedReward(rewardItem: RewardItem) {\n                        // TODO(\"User Get Reward\")\n                    }\n\n                    override fun onAdClosed() {\n                        // TODO(\"Not yet implemented\")\n                    }\n\n                    override fun onAdFailedToLoad() {\n                        // TODO(\"Not yet implemented\")\n                    }\n\n                    override fun onAdFailedToShow() {\n                        // TODO(\"Not yet implemented\")\n                    }\n\n                    override fun onAdLoaded() {\n                        // TODO(\"Not yet implemented\")\n                    }\n\n                    override fun onAdNotReady(message: String) {\n                        // TODO(\"Not yet implemented\")\n                    }\n                })\n            }\n\n            btnRewardedInterstitial.setOnClickListener {\n                showAdRewardedInterstitial(getString(R.string.admob_rewarded_interstitial),\n                    object : FrogoAdmobRewardedCallback {\n                        override fun onUserEarnedReward(rewardItem: RewardItem) {\n                            // TODO(\"User Get Reward\")\n                        }\n\n                        override fun onAdClosed() {\n                            // TODO(\"Not yet implemented\")\n                        }\n\n                        override fun onAdFailedToLoad() {\n                            // TODO(\"Not yet implemented\")\n                        }\n\n                        override fun onAdFailedToShow() {\n                            // TODO(\"Not yet implemented\")\n                        }\n\n                        override fun onAdLoaded() {\n                            // TODO(\"Not yet implemented\")\n                        }\n\n                        override fun onAdNotReady(message: String) {\n                            // TODO(\"Not yet implemented\")\n                        }\n                    })\n            }\n\n        }\n\n    }\n\n}\n```\n\n\u003c/details\u003e\n\n#### Jetpack Compose\n\n\u003cdetails\u003e\n  \u003csummary\u003eClick for detail!\u003c/summary\u003e\n\n#### ComposeActivity\n\n```kotlin\n\nclass ComposeActivity : ComponentActivity() {\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContent {\n            FrogoAdmobTheme {\n                // A surface container using the 'background' color from the theme\n                Surface(color = MaterialTheme.colors.background) {\n                    Column {\n                        FrogoAdmobBannerView(\n                            mAdUnitID = getString(R.string.admob_banner),\n                            mAdSize = adsize_banner\n                        )\n                    }\n                }\n            }\n        }\n    }\n}\n\n```\n\n\u003c/details\u003e\n\n#### Hybrid (Jetpack Compose + XML)\n\n\u003cdetails\u003e\n  \u003csummary\u003eClick for detail!\u003c/summary\u003e\n\n#### XML Layout\n\n```xml\n\n\u003cRelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:ads=\"http://schemas.android.com/apk/res-auto\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    tools:context=\".mvvm.main.MainActivity\"\u003e\n\n    \u003candroidx.compose.ui.platform.ComposeView\n        android:id=\"@+id/compose_view\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        android:layout_above=\"@id/include_ads_view\"/\u003e\n\n    \u003cinclude\n        android:id=\"@+id/include_ads_view\"\n        layout=\"@layout/ads_phone_tab_special_smart_banner\" /\u003e\n\n\u003c/RelativeLayout\u003e\n\n```\n\n#### Kotlin Class\n\n```kotlin\n\nclass HybridActivity : BaseActivity\u003cActivityHybridBinding\u003e() {\n\n    override fun setupViewBinding(): ActivityHybridBinding {\n        return ActivityHybridBinding.inflate(layoutInflater)\n    }\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        binding.apply {\n            composeView.setContent {\n                Greeting(\"FrogoAdmob\")\n            }\n\n            setupShowAdsBanner(includeAdsView.adsPhoneTabSpecialSmartBanner)\n        }\n\n    }\n\n    @Composable\n    fun Greeting(name: String) {\n        Text(text = \"Hello $name!\")\n    }\n\n}\n\n```\n\n\u003c/details\u003e\n\n#### Java Sample Implementation\n- You can follow sample below or go to Full Sample Code [Full Code](https://github.com/amirisback/frogo-admob/tree/master/app/src/main/java/com/frogobox/appadmob/javasample)\n\n\u003cdetails\u003e\n  \u003csummary\u003eClick for detail!\u003c/summary\u003e\n\n### Setup Java BaseActivity\n```java\npublic abstract class \u003cYour BaseJavaActivity\u003e extends FrogoAdmobActivity {\n\n    @Override\n    protected void onCreate(@Nullable Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n    }\n\n}\n```\n\n### Setup Your Activity\n\n```java\n\npublic class MainJavaActivity extends BaseJavaActivity {\n\n    private ActivityMainBinding binding;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        binding = ActivityMainBinding.inflate(LayoutInflater.from(this));\n        setContentView(binding.getRoot());\n        showBanner(binding.includeAdsView.adsPhoneTabSpecialSmartBanner);\n        hideButton();\n        setupButtonClick();\n    }\n\n    ...\n    ...\n    ...\n\n    private void setupButtonClick() {\n\n        binding.btnInterstitial.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View view) {\n                showAdInterstitial(getString(R.string.admob_interstitial));\n            }\n        });\n\n        binding.btnRewarded.setOnClickListener(view -\u003e showAdRewarded(getString(R.string.admob_rewarded), new FrogoAdmobRewardedCallback() {\n            @Override\n            public void onUserEarnedReward(@NonNull RewardItem rewardItem) {\n\n            }\n\n            @Override\n            public void onAdClosed() {\n\n            }\n\n            @Override\n            public void onAdFailedToLoad() {\n\n            }\n\n            @Override\n            public void onAdFailedToShow() {\n\n            }\n\n            @Override\n            public void onAdLoaded() {\n\n            }\n\n            @Override\n            public void onAdNotReady(@NonNull String message) {\n\n            }\n        }));\n\n        binding.btnRewardedInterstitial.setOnClickListener(view -\u003e showAdRewardedInterstitial(getString(R.string.admob_rewarded_interstitial), new FrogoAdmobRewardedCallback() {\n            @Override\n            public void onUserEarnedReward(@NonNull RewardItem rewardItem) {\n\n            }\n\n            @Override\n            public void onAdClosed() {\n\n            }\n\n            @Override\n            public void onAdFailedToLoad() {\n\n            }\n\n            @Override\n            public void onAdFailedToShow() {\n\n            }\n\n            @Override\n            public void onAdLoaded() {\n\n            }\n\n            @Override\n            public void onAdNotReady(@NonNull String message) {\n\n            }\n\n        }));\n\n    }\n\n}\n\n```\n\n\u003c/details\u003e\n\n## List Function FrogoAdmobActivity and FrogoSdkAdmobActivity\n```kotlin\n// Show Ad Consent\nfun showAdConsent()\n\n// ---------------------------------------------------------------------------------------------\n\n// Show Banner Ads\nfun showAdBanner(mAdView: AdView)\n\n// Show Banner Ads with timeout millisecond\nfun showAdBanner(mAdView: AdView, timeoutMilliSecond: Int)\n\n// Show Banner Ads with keyword\nfun showAdBanner(mAdView: AdView, keyword: List\u003cString\u003e)\n\n// Show Banner Ads with timeout millisecond and keyword\nfun showAdBanner(mAdView: AdView, timeoutMilliSecond: Int, keyword: List\u003cString\u003e)\n\n// Show Banner Ads  with timeout millisecond and keyword and callback\nfun showAdBanner(\n    mAdView: AdView,\n    timeoutMilliSecond: Int,\n    keyword: List\u003cString\u003e,\n    callback: FrogoAdmobBannerCallback\n)\n\n// Show Banner Ads with callback\nfun showAdBanner(mAdView: AdView, callback: FrogoAdmobBannerCallback)\n\n// Show Banner Ads  with timeout millisecond and callback\nfun showAdBanner(mAdView: AdView, timeoutMilliSecond: Int, callback: FrogoAdmobBannerCallback)\n\n// Show Banner Ads  with and keyword and callback\nfun showAdBanner(mAdView: AdView, keyword: List\u003cString\u003e, callback: FrogoAdmobBannerCallback)\n\n// ---------------------------------------------------------------------------------------------\n\n// Show Banner Ads with container\nfun showAdBannerContainer(\n    bannerAdUnitId: String,\n    mAdsSize: AdSize,\n    container: RelativeLayout,\n)\n\n// Show Banner Ads with container and timeout millisecond\nfun showAdBannerContainer(\n    bannerAdUnitId: String,\n    mAdsSize: AdSize,\n    container: RelativeLayout,\n    timeoutMilliSecond: Int,\n)\n\n// Show Banner Ads with container and keyword\nfun showAdBannerContainer(\n    bannerAdUnitId: String,\n    mAdsSize: AdSize,\n    container: RelativeLayout,\n    keyword: List\u003cString\u003e,\n)\n\n// Show Banner Ads with container and keyword and timeout millisecond\nfun showAdBannerContainer(\n    bannerAdUnitId: String,\n    mAdsSize: AdSize,\n    container: RelativeLayout,\n    timeoutMilliSecond: Int,\n    keyword: List\u003cString\u003e\n)\n\n// Show Banner Ads with container and callback\nfun showAdBannerContainer(\n    bannerAdUnitId: String,\n    mAdsSize: AdSize,\n    container: RelativeLayout,\n    callback: FrogoAdmobBannerCallback\n)\n\n// Show Banner Ads with container and timeout millisecond and callback\nfun showAdBannerContainer(\n    bannerAdUnitId: String,\n    mAdsSize: AdSize,\n    container: RelativeLayout,\n    timeoutMilliSecond: Int,\n    callback: FrogoAdmobBannerCallback\n)\n\n// Show Banner Ads with container and keyword and callback\nfun showAdBannerContainer(\n    bannerAdUnitId: String,\n    mAdsSize: AdSize,\n    container: RelativeLayout,\n    keyword: List\u003cString\u003e,\n    callback: FrogoAdmobBannerCallback\n)\n\n// Show Banner Ads with container and timeout millisecond and keyword and callback\nfun showAdBannerContainer(\n    bannerAdUnitId: String,\n    mAdsSize: AdSize,\n    container: RelativeLayout,\n    timeoutMilliSecond: Int,\n    keyword: List\u003cString\u003e,\n    callback: FrogoAdmobBannerCallback\n)\n\n// ---------------------------------------------------------------------------------------------\n\n// Show Interstitial Ads with timeout millisecond, keyword, callback\nfun showAdInterstitial(\n    interstitialAdUnitId: String,\n    timeoutMilliSecond: Int,\n    keyword: List\u003cString\u003e,\n    callback: FrogoAdmobInterstitialCallback\n)\n\n// Show Interstitial Ads with timeout millisecond and keyword\nfun showAdInterstitial(\n    interstitialAdUnitId: String,\n    timeoutMilliSecond: Int,\n    keyword: List\u003cString\u003e\n)\n\n// Show Interstitial Ads with timeout millisecond\nfun showAdInterstitial(\n    interstitialAdUnitId: String,\n    timeoutMilliSecond: Int\n)\n\n// Show Interstitial Ads with keyword\nfun showAdInterstitial(\n    interstitialAdUnitId: String,\n    keyword: List\u003cString\u003e\n)\n\n// Show Interstitial Ads\nfun showAdInterstitial(interstitialAdUnitId: String)\n\n// Show Interstitial Ads with timeout milliSecond and callback\nfun showAdInterstitial(\n    interstitialAdUnitId: String,\n    timeoutMilliSecond: Int,\n    callback: FrogoAdmobInterstitialCallback\n)\n\n// Show Interstitial Ads with keyword and callback\nfun showAdInterstitial(\n    interstitialAdUnitId: String,\n    keyword: List\u003cString\u003e,\n    callback: FrogoAdmobInterstitialCallback\n)\n\n// Show Interstitial Ads with callback\nfun showAdInterstitial(\n    interstitialAdUnitId: String,\n    callback: FrogoAdmobInterstitialCallback\n)\n\n// ---------------------------------------------------------------------------------------------\n\n// Show Rewarded Ads\nfun showAdRewarded(mAdUnitIdRewarded: String, callback: FrogoAdmobRewardedCallback)\n\n// Show Rewarded Ads with timeout millisecond\nfun showAdRewarded(\n    mAdUnitIdRewarded: String,\n    timeoutMilliSecond: Int,\n    callback: FrogoAdmobRewardedCallback\n)\n\n// Show Rewarded Ads with keyword\nfun showAdRewarded(\n    mAdUnitIdRewarded: String,\n    keyword: List\u003cString\u003e,\n    callback: FrogoAdmobRewardedCallback\n)\n\n// Show Rewarded Ads with timeout millisecond and keyword\nfun showAdRewarded(\n    mAdUnitIdRewarded: String,\n    timeoutMilliSecond: Int,\n    keyword: List\u003cString\u003e,\n    callback: FrogoAdmobRewardedCallback\n)\n\n// ---------------------------------------------------------------------------------------------\n\n// Show Rewarded Interstitial Ads\nfun showAdRewardedInterstitial(\n    mAdUnitIdRewardedInterstitial: String,\n    callback: FrogoAdmobRewardedCallback\n)\n\n// Show Rewarded Interstitial Ads with timeout millisecond\nfun showAdRewardedInterstitial(\n    mAdUnitIdRewardedInterstitial: String,\n    timeoutMilliSecond: Int,\n    callback: FrogoAdmobRewardedCallback\n)\n\n// Show Rewarded Interstitial Ads with keyword\nfun showAdRewardedInterstitial(\n    mAdUnitIdRewardedInterstitial: String,\n    keyword: List\u003cString\u003e,\n    callback: FrogoAdmobRewardedCallback\n)\n\n// Show Rewarded Interstitial Ads with timeout millisecond and keyword\nfun showAdRewardedInterstitial(\n    mAdUnitIdRewardedInterstitial: String,\n    timeoutMilliSecond: Int,\n    keyword: List\u003cString\u003e,\n    callback: FrogoAdmobRewardedCallback\n)\n\n// ---------------------------------------------------------------------------------------------\n\n// Unity Ads\n\nfun setupUnityAdApp(\n    testMode: Boolean,\n    unityGameId: String\n)\n\nfun setupUnityAdApp(\n    testMode: Boolean,\n    unityGameId: String,\n    callback: IFrogoUnityAdInitialization\n)\n\nfun showUnityAdInterstitial(\n    adInterstitialUnitId: String\n)\n\nfun showUnityAdInterstitial(\n    adInterstitialUnitId: String,\n    callback: IFrogoUnityAdInterstitial\n)\n\n// ---------------------------------------------------------------------------------------------\n\nfun showAdmobXUnityAdInterstitial(\n    admobInterstitialId: String,\n    unityInterstitialId: String,\n    callback: IFrogoMixedAdsInterstitial\n)\n\nfun showUnityXAdmobAdInterstitial(\n    admobInterstitialId: String,\n    unityInterstitialId: String,\n    callback: IFrogoMixedAdsInterstitial\n)\n```\n\n## Jetpack Compose Element\n\n### Variable\n\n```kotlin\nval adsize_banner: AdSize = AdSize.BANNER\nval adsize_full_banner: AdSize = AdSize.FULL_BANNER\nval adsize_large_banner: AdSize = AdSize.LARGE_BANNER\nval adsize_smart_banner: AdSize = AdSize.SMART_BANNER\nval adsize_medium_rectangle: AdSize = AdSize.MEDIUM_RECTANGLE\nval adsize_wide_skycraper: AdSize = AdSize.WIDE_SKYSCRAPER\n```\n\n### Function\n\n```kotlin\n\n@Composable\nfun FrogoAdmobBannerView(\n    mAdUnitID: String,\n    mAdSize: AdSize,\n    modifier: Modifier = Modifier\n) {\n    AndroidView(\n        modifier = modifier.fillMaxWidth(),\n        factory = { context -\u003e\n            showLogDebug(\"FrogoAdmobBannerView\")\n            AdView(context).apply {\n                adSize = mAdSize\n                adUnitId = mAdUnitID\n                loadAd(AdRequest.Builder().build())\n            }\n        }\n    )\n}\n\n```\n\n## User Messaging Platform (UMP)\n\n### How to use\n```kotlin\nshowAdConsent(object : IFrogoAdConsent {\n\n    override fun activity(): Activity {\n        return this@MainActivity\n    }\n\n    override fun isDebug(): Boolean {\n        return BuildConfig.DEBUG\n    }\n\n    override fun isUnderAgeAd(): Boolean {\n        return false\n    }\n\n    override fun onNotUsingAdConsent() {\n        // On Not Using Ad Consent\n    }\n\n    override fun onConsentSuccess() {\n        // On Consent Success\n    }\n\n    override fun onConsentError(formError: FormError) {\n        // On Consent Error\n    }\n\n})\n```\n\n### Notes \n- Read This [Stack Overflow](https://stackoverflow.com/questions/65351543/how-to-implement-ump-sdk-correctly-for-eu-consent?rq=3)\n\n## Allert\n\n### Update\n\n    \u003e\u003e on version 3.0.0\n    - import com.frogobox.admob.core.FrogoRvConstant\n    - import com.frogobox.admob.core.admob.FrogoAdmob\n    - import com.frogobox.admob.core.admob.FrogoAdmobActivity\n    - import com.frogobox.admob.core.FrogoAdmobViewHolder\n    - import com.frogobox.admob.core.FrogoAdmobViewAdapter\n    - import com.frogobox.admob.core.AdmobViewHolder\n\n    \u003e\u003e on version 4.0.0\n    - import com.frogobox.admob.core.FrogoRvConstant\n    - import com.frogobox.admob.core.FrogoAdmob\n    - import com.frogobox.admob.ui.FrogoAdmobActivity\n    - import com.frogobox.admob.widget.FrogoAdmobViewHolder\n    - import com.frogobox.admob.widget.FrogoAdmobViewAdapter\n    - import com.frogobox.admob.widget.AdmobViewHolder\n\n    \u003e\u003e on Version 4.2.0\n    - Add FrogoSdkAdmobActivity\n    - New Setup Implementation\n    - Fixing Bug : ShowBanner, ShowInterstitial, ShowRewarded\n\n    \u003e\u003e on Version 4.2.6 +\n    - Add Unity Ads\n    - Basic Interstitial\n\n### Test Ads From Google\n\n    // Declaration admob id for debug\n    def debugAdmobAppId = \"ca-app-pub-3940256099942544~3347511713\"\n    def debugAdmobBanner = \"ca-app-pub-3940256099942544/6300978111\"\n    def debugAdmobInterstitial = \"ca-app-pub-3940256099942544/1033173712\"\n    def debugAdmobInterstitialVideo = \"ca-app-pub-3940256099942544/8691691433\"\n    def debugAdmobRewarded = \"ca-app-pub-3940256099942544/5224354917\"\n    def debugAdmobRewardedInterstitial = \"ca-app-pub-3940256099942544/5354046379\"\n    def debugAdmobNativeAdvanced = \"ca-app-pub-3940256099942544/2247696110\"\n    def debugAdmobNativeAdvancedVideo = \"ca-app-pub-3940256099942544/1044960115\"\n\n## Colaborator\nVery open to anyone, I'll write your name under this, please contribute by sending an email to me\n\n- Mail To faisalamircs@gmail.com\n- Subject : Github _ [Github-Username-Account] _ [Language] _ [Repository-Name]\n- Example : Github_amirisback_kotlin_admob-helper-implementation\n\nName Of Contribute\n- Muhammad Faisal Amir\n- Waiting List\n- Waiting List\n\nWaiting for your contribute\n\n## Source\n- Google Sample Code [Click Here](https://github.com/googleads/googleads-mobile-android-examples)\n- Test Ads [Click Here](https://developers.google.com/admob/android/test-ads)\n- For Get Started [Click Here](https://developers.google.com/admob/android/quick-start)\n- Unity Ads Docs [Click Here](https://docs.unity.com/ads/en/manual/AndroidDeveloperIntegrations)\n\n## Attention !!!\nPlease enjoy and don't forget fork and give a star\n- Don't Forget Follow My Github Account\n\n![ScreenShoot Apps](docs/image/mad_score.png?raw=true)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famirisback%2Ffrogo-admob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famirisback%2Ffrogo-admob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famirisback%2Ffrogo-admob/lists"}