Created
April 14, 2019 17:31
-
-
Save stanbar/6e216135ad2df623e445de22b2b8df76 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sealed class AdProvider { | |
class BrandAdProvider(val name: String, val linkUrl: String, val imageGs: String) : AdProvider() { | |
val imageRef: StorageReference get() = FirebaseStorage.getInstance().getReferenceFromUrl(imageGs) | |
} | |
object AdMobProvider : AdProvider() | |
fun setupAds(where: String, adMobView: AdView, adBrandBanner: ImageView, firebaseAnalytics : FirebaseAnalytics) { | |
if (Utils.isProVersion) { | |
adMobView.hide() | |
adBrandBanner.hide() | |
} else { | |
when (this) { | |
is AdMobProvider -> { | |
Timber.d("loading admob banner") | |
adBrandBanner.hide() | |
adMobView.show() | |
adMobView.requestAd() | |
} | |
is BrandAdProvider -> { | |
Timber.d("loading branded banner") | |
adMobView.hide() | |
adBrandBanner.show() | |
adBrandBanner.setOnClickListener { | |
AdsService.showAd(adMobView.context, firebaseAnalytics, this, where) | |
} | |
GlideApp.with(adMobView.context) | |
.load(this.imageRef) | |
.fitCenter() | |
.into(adBrandBanner) | |
} | |
} | |
} | |
} | |
} | |
object RemoteConfig { | |
private val gson: Gson = Gson() | |
val fullScreenAdPeriod: Int get() = FirebaseUtil.remoteConfig.getLong(FULL_SCREEN_AD_PERIOD).toInt() | |
val onlineBannerAdPeriod: Int get() = FirebaseUtil.remoteConfig.getLong(ONLINE_BANNER_AD_PERIOD).toInt() | |
val onlineBannerAdProvider: AdProvider get() = getAdProvider(ONLINE_BANNER_AD_PROVIDER) | |
val coilCalculatorAdProvider: AdProvider get() = getAdProvider(COIL_CALCULATOR_AD_PROVIDER) | |
val ohmLawAdProvider: AdProvider get() = getAdProvider(OHM_LAW_AD_PROVIDER) | |
val liquidBlenderAdProvider: AdProvider get() = getAdProvider(LIQUID_BLENDER_AD_PROVIDER) | |
val batteriesDatabaseAdProvider: AdProvider get() = getAdProvider(BATTERIES_DATABASE_AD_PROVIDER) | |
val convertersAdProvider: AdProvider get() = getAdProvider(CONVERTERS_AD_PROVIDER) | |
val batteriesLifeAdProvider: AdProvider get() = getAdProvider(BATTERIES_LIFE_AD_PROVIDER) | |
val knowledgeAdProvider: AdProvider get() = getAdProvider(KNOWLEDGE_AD_PROVIDER) | |
val lobbyAdProvider: AdProvider get() = getAdProvider(LOBBY_AD_PROVIDER) | |
private fun getAdProvider(key: String): AdProvider { | |
val jsonString = FirebaseUtil.remoteConfig.getString(key) | |
val adProviderJson: Map<String, String> = | |
gson.fromJson(jsonString, object : TypeToken<Map<String, String>>() {}.type) | |
return if (adProviderJson["name"] == "admob") AdProvider.AdMobProvider | |
else AdProvider.BrandAdProvider( | |
adProviderJson["name"] ?: error("name can not be null"), | |
adProviderJson["linkUrl"] ?: error("linkUrl can not be null"), | |
adProviderJson["imageGs"] ?: error("imageGs can not be null") | |
) | |
} | |
private const val FULL_SCREEN_AD_PERIOD = "fullscreen_ad_period" | |
private const val ONLINE_BANNER_AD_PERIOD = "online_banner_ad_period" | |
private const val ONLINE_BANNER_AD_PROVIDER = "online_banner_ad_provider" | |
private const val COIL_CALCULATOR_AD_PROVIDER = "coil_calculator_ad_provider" | |
private const val OHM_LAW_AD_PROVIDER = "ohm_law_ad_provider" | |
private const val LIQUID_BLENDER_AD_PROVIDER = "liquid_blender_ad_provider" | |
private const val BATTERIES_DATABASE_AD_PROVIDER = "batteries_database_ad_provider" | |
private const val CONVERTERS_AD_PROVIDER = "converters_ad_provider" | |
private const val BATTERIES_LIFE_AD_PROVIDER = "batteries_life_ad_provider" | |
private const val KNOWLEDGE_AD_PROVIDER = "knowledge_ad_provider" | |
private const val LOBBY_AD_PROVIDER = "lobby_ad_provider" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
and in each Fragment (page) i setup the ads like so