Integrated v2 api for get_ad_data.

Data caching and implemented it on screens in all the files.
This commit is contained in:
2024-09-23 21:09:49 +05:30
parent 59f1fb6b35
commit 898dfdf42f
17 changed files with 286 additions and 175 deletions

View File

@@ -4,9 +4,13 @@ import com.woka.advertisements.models.AdsResponse
import com.woka.networking.ApiResponse import com.woka.networking.ApiResponse
import retrofit2.Response import retrofit2.Response
import retrofit2.http.GET import retrofit2.http.GET
import retrofit2.http.Query
interface AdsApiService { interface AdsApiService {
@GET("get_ad_data") @GET("v2/get_ad_data")
suspend fun getAdsData() : Response<ApiResponse<AdsResponse>> suspend fun getAdsData(
@Query("start") start: Int = 0,
@Query("limit") limit: Int = 20
) : Response<ApiResponse<AdsResponse>>
} }

View File

@@ -1,6 +1,6 @@
package com.woka.advertisements package com.woka.advertisements
import com.woka.advertisements.models.AdData import com.woka.advertisements.models.AdResult
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.networking.RetrofitHelper import com.woka.networking.RetrofitHelper
import com.woka.networking.RetrofitHelper.handleApiCall import com.woka.networking.RetrofitHelper.handleApiCall
@@ -10,9 +10,9 @@ object AdsRepository {
private val apiService = RetrofitHelper.getRetrofit().create(AdsApiService::class.java) private val apiService = RetrofitHelper.getRetrofit().create(AdsApiService::class.java)
@Volatile @Volatile
private var adsData: List<AdData>? = null private var adsData: List<AdResult>? = null
suspend fun getADs(): List<AdData>?{ suspend fun getADs(): List<AdResult>?{
if (adsData != null){ if (adsData != null){
return adsData return adsData
} }

View File

@@ -0,0 +1,10 @@
package com.woka.advertisements.models
data class AdResult(
val advertisement: Advertisement?,
val google_ad: GoogleAd?,
val id: Int?,
val is_active: String?,
val page_name: String?,
val slug: String?
)

View File

@@ -1,6 +1,6 @@
package com.woka.advertisements.models package com.woka.advertisements.models
data class AdsResponse( data class AdsResponse(
val result: List<AdData?>?, val result: List<AdResult?>?,
val total_records: Int? val total_records: Int?
) )

View File

@@ -1,11 +1,13 @@
package com.woka.advertisements.models package com.woka.advertisements.models
data class AdData( data class Advertisement(
val ad_company: String?, val ad_company: String?,
val ad_link: String?, val ad_link: String?,
val ad_pages_xid: Int?,
val banner_image: String?, val banner_image: String?,
val button_image: String?, val button_image: String?,
val for_page: String?, val for_page: String?,
val id: Int?, val id: Int?,
val is_active: String?,
val title: String? val title: String?
) )

View File

@@ -7,5 +7,10 @@ enum class ForPage(val value: String) {
KARAOKE("karaoke"), KARAOKE("karaoke"),
AUDIO_BOOKS("audio-books"), AUDIO_BOOKS("audio-books"),
GAMES("games"), GAMES("games"),
SHOP_SUPER_CATEGORY("shop-super-category"); SHOP_SUPER_CATEGORY("shop-super-category"),
FM("fm"),
GAME_INTERSTITIAL("game-interestial"),
GAME_PLAYER("game-web-view"),
KARAOKE_PLAYER("karaoke-player");
} }

View File

@@ -0,0 +1,7 @@
package com.woka.advertisements.models
data class GoogleAd(
val ad_pages_xid: Int?,
val id: Int?,
val is_active: String?
)

View File

@@ -76,6 +76,7 @@ class AudioBooksActivity : WokaBaseActivity() {
private lateinit var playerLauncher: ActivityResultLauncher<Intent> private lateinit var playerLauncher: ActivityResultLauncher<Intent>
private var customAdLoaded = false private var customAdLoaded = false
private var shallLoadGoogleAd = false
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@@ -205,43 +206,45 @@ class AudioBooksActivity : WokaBaseActivity() {
private fun loadAds(){ private fun loadAds(){
lifecycleScope.launch { lifecycleScope.launch {
AdsRepository.getADs()?.let { ads -> AdsRepository.getADs()?.let { ads ->
val theme1ads = ads.filter { it.for_page == ForPage.AUDIO_BOOKS.value} val theme1ads = ads.filter { it.slug == ForPage.AUDIO_BOOKS.value}
if (theme1ads.isNotEmpty()){ if (theme1ads.isNotEmpty()){
val adDetails = theme1ads.first() theme1ads.first().advertisement?.let {adDetails ->
AdClicksHelper.addImpression(adDetails.id)
AdClicksHelper.addImpression(adDetails.id) customAdLoaded = true
customAdLoaded = true binding.trailerBtn.hide()
binding.trailerName.hide()
binding.trailerBtn.hide() binding.adButtonView.show()
binding.trailerName.hide()
binding.adButtonView.show() binding.trailerView.show()
adjustTrailerImage()
binding.trailerView.show() adDetails.banner_image?.let {url ->
adjustTrailerImage() binding.trailerImage.loadImage(url)
adDetails.banner_image?.let {url ->
binding.trailerImage.loadImage(url)
}
adDetails.button_image?.let {url ->
binding.adButtonImg.loadImage(url)
}
adDetails.ad_link?.let {url ->
binding.adBtn.setOnClickListener {
AdClicksHelper.addClick(adDetails.id)
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
)
} }
binding.trailerImage.setOnClickListener { adDetails.button_image?.let {url ->
binding.adBtn.performClick() binding.adButtonImg.loadImage(url)
}
adDetails.ad_link?.let {url ->
binding.adBtn.setOnClickListener {
AdClicksHelper.addClick(adDetails.id)
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
)
}
binding.trailerImage.setOnClickListener {
binding.adBtn.performClick()
}
} }
} }
shallLoadGoogleAd = theme1ads.first().google_ad != null
} }
} }
} }
@@ -309,7 +312,7 @@ class AudioBooksActivity : WokaBaseActivity() {
) )
} }
if (!customAdLoaded){ if (!customAdLoaded && shallLoadGoogleAd){
loadGoogleAds() loadGoogleAds()
} }
} }

View File

@@ -604,26 +604,26 @@ class Home1Fragment : Fragment() {
private fun loadAds(){ private fun loadAds(){
lifecycleScope.launch { lifecycleScope.launch {
AdsRepository.getADs()?.let {ads -> AdsRepository.getADs()?.let {ads ->
val homeAds = ads.filter { it.for_page == ForPage.THEME_1.value } val homeAds = ads.filter { it.slug == ForPage.THEME_1.value }
if (homeAds.isNotEmpty()){ if (homeAds.isNotEmpty()){
val adDetails = homeAds.first() homeAds.first().advertisement?.let {adDetails ->
adClickHelper.addImpression(adDetails.id)
adClickHelper.addImpression(adDetails.id) adDetails.banner_image?.let {url ->
binding.imgAd.loadImage(url)
binding.adView.show()
}
adDetails.banner_image?.let {url -> adDetails.ad_link?.let {url ->
binding.imgAd.loadImage(url) binding.adView.setOnClickListener {
binding.adView.show()
}
adDetails.ad_link?.let {url -> adClickHelper.addClick(adDetails.id)
binding.adView.setOnClickListener {
adClickHelper.addClick(adDetails.id) startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity( )
Intent(Intent.ACTION_VIEW, Uri.parse(url)) }
)
} }
} }
} }

View File

@@ -8,6 +8,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdSize import com.google.android.gms.ads.AdSize
@@ -15,6 +16,8 @@ import com.google.android.gms.ads.AdView
import com.jwplayer.pub.api.media.playlists.PlaylistItem import com.jwplayer.pub.api.media.playlists.PlaylistItem
import com.woka.R import com.woka.R
import com.woka.WokaApp import com.woka.WokaApp
import com.woka.advertisements.AdsRepository
import com.woka.advertisements.models.ForPage
import com.woka.audiobooks.views.AudioBooksActivity import com.woka.audiobooks.views.AudioBooksActivity
import com.woka.database.helpers.ClicksHelper import com.woka.database.helpers.ClicksHelper
import com.woka.database.models.ContentType import com.woka.database.models.ContentType
@@ -38,6 +41,7 @@ import com.woka.utils.hide
import com.woka.utils.show import com.woka.utils.show
import com.woka.webseries.views.WebSeriesActivity import com.woka.webseries.views.WebSeriesActivity
import com.woka.wokagames.views.GamesActivity import com.woka.wokagames.views.GamesActivity
import kotlinx.coroutines.launch
class Home2Fragment : Fragment() { class Home2Fragment : Fragment() {
@@ -77,19 +81,28 @@ class Home2Fragment : Fragment() {
} }
private fun loadGoogleAds() { private fun loadGoogleAds() {
lifecycleScope.launch {
AdsRepository.getADs()?.let { ads ->
val fmAds = ads.filter { it.slug == ForPage.THEME_2.value }
val adView = AdView(requireContext()) if (fmAds.isNotEmpty()){
fmAds.first().google_ad?.let {
val adView = AdView(requireContext())
adView.adUnitId = HOME_THEME_2_BANNER_AD adView.adUnitId = HOME_THEME_2_BANNER_AD
adView.setAdSize(AdSize(AdSize.FULL_WIDTH, AdSize.AUTO_HEIGHT)) adView.setAdSize(AdSize(AdSize.FULL_WIDTH, AdSize.AUTO_HEIGHT))
binding.adsContainer.removeAllViews() binding.adsContainer.removeAllViews()
binding.adsContainer.addView(adView) binding.adsContainer.addView(adView)
adView.loadAd( adView.loadAd(
AdRequest.Builder() AdRequest.Builder()
.build() .build()
) )
}
}
}
}
} }
private fun iniViews() { private fun iniViews() {

View File

@@ -7,6 +7,7 @@ import android.util.Log
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import androidx.media3.common.PlaybackException import androidx.media3.common.PlaybackException
import androidx.media3.common.Player import androidx.media3.common.Player
@@ -15,6 +16,8 @@ import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdSize import com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.AdView import com.google.android.gms.ads.AdView
import com.woka.R import com.woka.R
import com.woka.advertisements.AdsRepository
import com.woka.advertisements.models.ForPage
import com.woka.database.helpers.ClicksHelper import com.woka.database.helpers.ClicksHelper
import com.woka.database.models.ContentType import com.woka.database.models.ContentType
import com.woka.databinding.ActivityFmactivityBinding import com.woka.databinding.ActivityFmactivityBinding
@@ -25,6 +28,7 @@ import com.woka.utils.TAG
import com.woka.utils.WokaBaseActivity import com.woka.utils.WokaBaseActivity
import com.woka.utils.hide import com.woka.utils.hide
import com.woka.utils.show import com.woka.utils.show
import kotlinx.coroutines.launch
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min
@@ -205,19 +209,28 @@ class FMActivity : WokaBaseActivity() {
} }
private fun loadGoogleAds() { private fun loadGoogleAds() {
lifecycleScope.launch {
AdsRepository.getADs()?.let {ads ->
val fmAds = ads.filter { it.slug == ForPage.FM.value }
val adView = AdView(this) if (fmAds.isNotEmpty()){
fmAds.first().google_ad?.let {
val adView = AdView(this@FMActivity)
adView.adUnitId = GAME_BANNER_AD adView.adUnitId = GAME_BANNER_AD
adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60)) adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60))
binding.adsContainer.removeAllViews() binding.adsContainer.removeAllViews()
binding.adsContainer.addView(adView) binding.adsContainer.addView(adView)
adView.loadAd( adView.loadAd(
AdRequest.Builder() AdRequest.Builder()
.build() .build()
) )
}
}
}
}
} }
private fun updateVolumeButtons(){ private fun updateVolumeButtons(){

View File

@@ -26,6 +26,7 @@ import androidx.core.app.ActivityCompat
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import androidx.media3.common.PlaybackException import androidx.media3.common.PlaybackException
import androidx.media3.common.Player import androidx.media3.common.Player
@@ -35,6 +36,8 @@ import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdSize import com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.AdView import com.google.android.gms.ads.AdView
import com.woka.R import com.woka.R
import com.woka.advertisements.AdsRepository
import com.woka.advertisements.models.ForPage
import com.woka.database.helpers.ClicksHelper import com.woka.database.helpers.ClicksHelper
import com.woka.database.models.ContentType import com.woka.database.models.ContentType
import com.woka.databinding.ActivityKaraokePlayerrBinding import com.woka.databinding.ActivityKaraokePlayerrBinding
@@ -485,18 +488,28 @@ class KaraokePlayerActivity : WokaBaseActivity() {
private fun loadGoogleAds() { private fun loadGoogleAds() {
val adView = AdView(this) lifecycleScope.launch {
AdsRepository.getADs()?.let { ads ->
val fmAds = ads.filter { it.slug == ForPage.KARAOKE_PLAYER.value }
adView.adUnitId = GAME_BANNER_AD if (fmAds.isNotEmpty()){
adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 100)) fmAds.first().google_ad?.let {
val adView = AdView(this@KaraokePlayerActivity)
binding.adsContainer.removeAllViews() adView.adUnitId = GAME_BANNER_AD
binding.adsContainer.addView(adView) adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 100))
adView.loadAd( binding.adsContainer.removeAllViews()
AdRequest.Builder() binding.adsContainer.addView(adView)
.build()
) adView.loadAd(
AdRequest.Builder()
.build()
)
}
}
}
}
} }
private fun playStopPlayingAudio() { private fun playStopPlayingAudio() {

View File

@@ -76,6 +76,7 @@ class KaraokeActivity : WokaBaseActivity() {
private lateinit var playerLauncher: ActivityResultLauncher<Intent> private lateinit var playerLauncher: ActivityResultLauncher<Intent>
private var customAdLoaded = false private var customAdLoaded = false
private var shallLoadGoogleAd = false
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@@ -535,7 +536,7 @@ class KaraokeActivity : WokaBaseActivity() {
) )
} }
if (!customAdLoaded){ if (!customAdLoaded && shallLoadGoogleAd){
loadGoogleAds() loadGoogleAds()
} }
} }
@@ -574,43 +575,45 @@ class KaraokeActivity : WokaBaseActivity() {
private fun loadAds(){ private fun loadAds(){
lifecycleScope.launch { lifecycleScope.launch {
AdsRepository.getADs()?.let { ads -> AdsRepository.getADs()?.let { ads ->
val theme1ads = ads.filter { it.for_page == ForPage.KARAOKE.value} val theme1ads = ads.filter { it.slug == ForPage.KARAOKE.value}
if (theme1ads.isNotEmpty()){ if (theme1ads.isNotEmpty()){
val adDetails = theme1ads.first() theme1ads.first().advertisement?.let {adDetails ->
AdClicksHelper.addImpression(adDetails.id)
AdClicksHelper.addImpression(adDetails.id) customAdLoaded = true
customAdLoaded = true binding.trailerBtn.hide()
binding.trailerName.hide()
binding.trailerBtn.hide() binding.adButtonView.show()
binding.trailerName.hide()
binding.adButtonView.show() binding.trailerView.show()
adjustTrailerImage()
binding.trailerView.show() adDetails.banner_image?.let {url ->
adjustTrailerImage() binding.trailerImage.loadImage(url)
adDetails.banner_image?.let {url ->
binding.trailerImage.loadImage(url)
}
adDetails.button_image?.let {url ->
binding.adButtonImg.loadImage(url)
}
adDetails.ad_link?.let {url ->
binding.adBtn.setOnClickListener {
AdClicksHelper.addClick(adDetails.id)
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
)
} }
binding.trailerImage.setOnClickListener { adDetails.button_image?.let {url ->
binding.adBtn.performClick() binding.adButtonImg.loadImage(url)
}
adDetails.ad_link?.let {url ->
binding.adBtn.setOnClickListener {
AdClicksHelper.addClick(adDetails.id)
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
)
}
binding.trailerImage.setOnClickListener {
binding.adBtn.performClick()
}
} }
} }
shallLoadGoogleAd = theme1ads.first().google_ad != null
} }
} }
} }

View File

@@ -144,18 +144,18 @@ class ShopFragment1 : Fragment() {
private fun loadAds(categoryList: MutableList<BaseCategory>) { private fun loadAds(categoryList: MutableList<BaseCategory>) {
lifecycleScope.launch { lifecycleScope.launch {
AdsRepository.getADs()?.let { ads -> AdsRepository.getADs()?.let { ads ->
val superShopAds = ads.filter { it.for_page == ForPage.SHOP_SUPER_CATEGORY.value } val superShopAds = ads.filter { it.slug == ForPage.SHOP_SUPER_CATEGORY.value }
if (superShopAds.isNotEmpty()) { if (superShopAds.isNotEmpty()) {
val adDetails = superShopAds.first() superShopAds.first().advertisement?.let {adDetails ->
AdClicksHelper.addImpression(adDetails.id)
adId = adDetails.id
AdClicksHelper.addImpression(adDetails.id) categoryList.add(0, BaseCategory(-1, adDetails.banner_image, adDetails.title))
adId = adDetails.id adLink = adDetails.ad_link
categoryList.add(0, BaseCategory(-1, adDetails.banner_image, adDetails.title)) adapter.notifyItemInserted(0)
adLink = adDetails.ad_link }
adapter.notifyItemInserted(0)
} }
} }
} }

View File

@@ -78,6 +78,7 @@ class WebSeriesFragment : Fragment() {
private lateinit var playerLauncher: ActivityResultLauncher<Intent> private lateinit var playerLauncher: ActivityResultLauncher<Intent>
private var isAdLoaded = false private var isAdLoaded = false
private var shallLoadGoogleAd = false
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
@@ -281,7 +282,9 @@ class WebSeriesFragment : Fragment() {
binding.trailerView.show() binding.trailerView.show()
loadGoogleAds() if (!isAdLoaded && shallLoadGoogleAd){
loadGoogleAds()
}
adjustMasilaImage() adjustMasilaImage()
@@ -404,42 +407,44 @@ class WebSeriesFragment : Fragment() {
private fun loadCustomAds(){ private fun loadCustomAds(){
lifecycleScope.launch { lifecycleScope.launch {
AdsRepository.getADs()?.let { ads -> AdsRepository.getADs()?.let { ads ->
val theme1ads = ads.filter { it.for_page == ForPage.WEB_SERIES.value} val theme1ads = ads.filter { it.slug == ForPage.WEB_SERIES.value}
if (theme1ads.isNotEmpty()){ if (theme1ads.isNotEmpty()){
val adDetails = theme1ads.first() theme1ads.first().advertisement?.let {adDetails ->
AdClicksHelper.addImpression(adDetails.id)
AdClicksHelper.addImpression(adDetails.id) isAdLoaded = true
isAdLoaded = true binding.trailerBtn.hide()
binding.trailerTxt.hide()
binding.trailerBtn.hide() binding.adButtonView.show()
binding.trailerTxt.hide()
binding.adButtonView.show() adDetails.banner_image?.let {url ->
Glide.with(binding.masilaImage)
adDetails.banner_image?.let {url -> .load(url)
Glide.with(binding.masilaImage) .into(binding.masilaImage)
.load(url)
.into(binding.masilaImage)
}
adDetails.button_image?.let {url ->
binding.adButtonImg.loadImage(url)
}
adDetails.ad_link?.let {url ->
binding.adBtn.setOnClickListener {
AdClicksHelper.addClick(adDetails.id)
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
)
} }
binding.masilaImage.setOnClickListener { adDetails.button_image?.let {url ->
binding.adBtn.performClick() binding.adButtonImg.loadImage(url)
}
adDetails.ad_link?.let {url ->
binding.adBtn.setOnClickListener {
AdClicksHelper.addClick(adDetails.id)
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
)
}
binding.masilaImage.setOnClickListener {
binding.adBtn.performClick()
}
} }
} }
shallLoadGoogleAd = theme1ads.first().google_ad != null
} }
} }
} }

View File

@@ -10,10 +10,13 @@ import android.webkit.WebSettings
import android.webkit.WebViewClient import android.webkit.WebViewClient
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdSize import com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.AdView import com.google.android.gms.ads.AdView
import com.woka.R import com.woka.R
import com.woka.advertisements.AdsRepository
import com.woka.advertisements.models.ForPage
import com.woka.database.helpers.ClicksHelper import com.woka.database.helpers.ClicksHelper
import com.woka.database.models.ContentType import com.woka.database.models.ContentType
import com.woka.databinding.ActivityGamePlayerBinding import com.woka.databinding.ActivityGamePlayerBinding
@@ -22,6 +25,7 @@ import com.woka.userdata.UserRepository
import com.woka.userdata.userDataModels.VideoViewRequestData import com.woka.userdata.userDataModels.VideoViewRequestData
import com.woka.utils.DecisionDialog import com.woka.utils.DecisionDialog
import com.woka.utils.WokaBaseActivity import com.woka.utils.WokaBaseActivity
import kotlinx.coroutines.launch
class GamePlayerActivity : WokaBaseActivity() { class GamePlayerActivity : WokaBaseActivity() {
@@ -172,18 +176,27 @@ class GamePlayerActivity : WokaBaseActivity() {
} }
private fun loadGoogleAds() { private fun loadGoogleAds() {
lifecycleScope.launch {
AdsRepository.getADs()?.let { ads ->
val fmAds = ads.filter { it.slug == ForPage.GAME_PLAYER.value }
val adView = AdView(this) if (fmAds.isNotEmpty()){
fmAds.first().google_ad?.let {
val adView = AdView(this@GamePlayerActivity)
adView.adUnitId = GAME_BANNER_AD adView.adUnitId = GAME_BANNER_AD
adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60)) adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60))
binding.adsContainer.removeAllViews() binding.adsContainer.removeAllViews()
binding.adsContainer.addView(adView) binding.adsContainer.addView(adView)
adView.loadAd( adView.loadAd(
AdRequest.Builder() AdRequest.Builder()
.build() .build()
) )
}
}
}
}
} }
} }

View File

@@ -33,6 +33,7 @@ import com.woka.databinding.ActivityGamesBinding
import com.woka.databinding.DialogModuleShowerBinding import com.woka.databinding.DialogModuleShowerBinding
import com.woka.googleads.GAME_BANNER_AD import com.woka.googleads.GAME_BANNER_AD
import com.woka.googleads.GAME_TRAILER_AD import com.woka.googleads.GAME_TRAILER_AD
import com.woka.googleads.HOME_THEME_2_BANNER_AD
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.userPreference.UserType import com.woka.userPreference.UserType
import com.woka.utils.NoSignInDialog import com.woka.utils.NoSignInDialog
@@ -69,6 +70,7 @@ class GamesActivity : WokaBaseActivity() {
private lateinit var noSignInDialog: NoSignInDialog private lateinit var noSignInDialog: NoSignInDialog
private var customAdLoaded = false private var customAdLoaded = false
private var shallLoadGoogleAd = false
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@@ -184,7 +186,23 @@ class GamesActivity : WokaBaseActivity() {
private fun showAdAndOpenGame(gameData: GameData){ private fun showAdAndOpenGame(gameData: GameData){
gameData.game_url?.let { gameData.game_url?.let {
interstitialAds?.showNewAd(this){ lifecycleScope.launch {
AdsRepository.getADs()?.let { ads ->
val fmAds = ads.filter { it.slug == ForPage.GAME_INTERSTITIAL.value }
if (fmAds.isNotEmpty()){
fmAds.first().google_ad?.let {_ ->
interstitialAds?.showNewAd(this@GamesActivity){
startActivity(Intent(this@GamesActivity, GamePlayerActivity::class.java).apply {
putExtra(GamePlayerActivity.EXTRA_GAME_PLAYER_DATA, GamePlayerData(gameData.id, it, gameData.screen_orientation == "Landscape"))
})
}
return@launch
}
}
}
startActivity(Intent(this@GamesActivity, GamePlayerActivity::class.java).apply { startActivity(Intent(this@GamesActivity, GamePlayerActivity::class.java).apply {
putExtra(GamePlayerActivity.EXTRA_GAME_PLAYER_DATA, GamePlayerData(gameData.id, it, gameData.screen_orientation == "Landscape")) putExtra(GamePlayerActivity.EXTRA_GAME_PLAYER_DATA, GamePlayerData(gameData.id, it, gameData.screen_orientation == "Landscape"))
}) })
@@ -453,7 +471,7 @@ class GamesActivity : WokaBaseActivity() {
) )
} }
if (!customAdLoaded){ if (!customAdLoaded && shallLoadGoogleAd){
loadGoogleAds() loadGoogleAds()
} }
} }
@@ -466,43 +484,45 @@ class GamesActivity : WokaBaseActivity() {
private fun loadAds(){ private fun loadAds(){
lifecycleScope.launch { lifecycleScope.launch {
AdsRepository.getADs()?.let { ads -> AdsRepository.getADs()?.let { ads ->
val theme1ads = ads.filter { it.for_page == ForPage.GAMES.value} val theme1ads = ads.filter { it.slug == ForPage.GAMES.value}
if (theme1ads.isNotEmpty()){ if (theme1ads.isNotEmpty()){
val adDetails = theme1ads.first() theme1ads.first().advertisement?.let {adDetails ->
AdClicksHelper.addImpression(adDetails.id)
AdClicksHelper.addImpression(adDetails.id) customAdLoaded = true
customAdLoaded = true binding.trailerBtn.hide()
binding.trailerName.hide()
binding.trailerBtn.hide() binding.adButtonView.show()
binding.trailerName.hide()
binding.adButtonView.show() binding.trailerView.show()
adjustTrailerImage()
binding.trailerView.show() adDetails.banner_image?.let {url ->
adjustTrailerImage() binding.trailerImage.loadImage(url)
adDetails.banner_image?.let {url ->
binding.trailerImage.loadImage(url)
}
adDetails.button_image?.let {url ->
binding.adButtonImg.loadImage(url)
}
adDetails.ad_link?.let {url ->
binding.adBtn.setOnClickListener {
AdClicksHelper.addClick(adDetails.id)
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
)
} }
binding.trailerImage.setOnClickListener { adDetails.button_image?.let {url ->
binding.adBtn.performClick() binding.adButtonImg.loadImage(url)
}
adDetails.ad_link?.let {url ->
binding.adBtn.setOnClickListener {
AdClicksHelper.addClick(adDetails.id)
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(url))
)
}
binding.trailerImage.setOnClickListener {
binding.adBtn.performClick()
}
} }
} }
shallLoadGoogleAd = theme1ads.first().google_ad != null
} }
} }
} }