Banner and Interstitial | RecyclerView with Banner |
---|---|
User Messaging Platform | Rewarded Apps |
---|---|
$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 *
// 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")
}
}
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)
}
<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>
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() {
}
})
}
}
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")
}
})
}
}
}
}
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
)
}
}
}
}
}
}
<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>
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!")
}
}
public abstract class <Your BaseJavaActivity> extends FrogoAdmobActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
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) {
}
}));
}
}
// 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
)
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
@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())
}
}
)
}
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
}
})
>> 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
// 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"
Very open to anyone, I'll write your name under this, please contribute by sending an email to me
Name Of Contribute
Waiting for your contribute
Please enjoy and don't forget fork and give a star