Google ads integration.

Player ads research with ad tag
This commit is contained in:
2024-09-26 20:26:19 +05:30
parent 2aab254faf
commit 2ecdb497b5
9 changed files with 107 additions and 39 deletions

View File

@@ -12,5 +12,10 @@ enum class ForPage(val value: String) {
FM("fm"), FM("fm"),
GAME_INTERSTITIAL("game-interestial"), GAME_INTERSTITIAL("game-interestial"),
GAME_PLAYER("game-web-view"), GAME_PLAYER("game-web-view"),
KARAOKE_PLAYER("karaoke-player"); KARAOKE_PLAYER("karaoke-player"),
MY_LIST_AND_NOTIFICATION("my-list"),
MORE("more"),
LIVE_TV_ADS("live-tv-ad"),
WEB_SERIES_VIDEO_ADS("web-series-video-ad");
} }

View File

@@ -329,7 +329,7 @@ class MyListFragment : Fragment() {
private fun loadGoogleAds() { private fun loadGoogleAds() {
lifecycleScope.launch { lifecycleScope.launch {
AdsRepository.getADs()?.let { ads -> AdsRepository.getADs()?.let { ads ->
val fmAds = ads.filter { it.slug == ForPage.FM.value } val fmAds = ads.filter { it.slug == ForPage.MY_LIST_AND_NOTIFICATION.value }
if (fmAds.isNotEmpty()){ if (fmAds.isNotEmpty()){
fmAds.first().google_ad?.let { fmAds.first().google_ad?.let {

View File

@@ -5,11 +5,18 @@ import android.os.Bundle
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 com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdSize
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.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
import com.woka.databinding.ActivityNotificationsBinding import com.woka.databinding.ActivityNotificationsBinding
import com.woka.googleads.FM
import com.woka.karaoke.views.KaraokeActivity import com.woka.karaoke.views.KaraokeActivity
import com.woka.networking.ApiResult import com.woka.networking.ApiResult
import com.woka.shop.views.ShopActivity import com.woka.shop.views.ShopActivity
@@ -19,6 +26,7 @@ import com.woka.utils.lightStatusBar
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 NotificationsActivity : WokaBaseActivity() { class NotificationsActivity : WokaBaseActivity() {
@@ -49,6 +57,7 @@ class NotificationsActivity : WokaBaseActivity() {
NotificationRepository.loadNotifications() NotificationRepository.loadNotifications()
loadGoogleAds()
} }
private fun initViews() { private fun initViews() {
@@ -128,4 +137,29 @@ class NotificationsActivity : WokaBaseActivity() {
} }
} }
} }
private fun loadGoogleAds() {
lifecycleScope.launch {
AdsRepository.getADs()?.let { ads ->
val fmAds = ads.filter { it.slug == ForPage.MY_LIST_AND_NOTIFICATION.value }
if (fmAds.isNotEmpty()){
fmAds.first().google_ad?.let {
val adView = AdView(this@NotificationsActivity)
adView.adUnitId = FM
adView.setAdSize(AdSize(AdSize.FULL_WIDTH, 60))
binding.adsContainer.removeAllViews()
binding.adsContainer.addView(adView)
adView.loadAd(
AdRequest.Builder()
.build()
)
}
}
}
}
}
} }

View File

@@ -11,6 +11,7 @@ import android.view.WindowManager
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.recyclerview.widget.SimpleItemAnimator import androidx.recyclerview.widget.SimpleItemAnimator
import com.google.android.gms.ads.AdRequest import com.google.android.gms.ads.AdRequest
@@ -19,10 +20,13 @@ 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.Companion.userPrefs import com.woka.WokaApp.Companion.userPrefs
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.ActivityMoreHomeBinding import com.woka.databinding.ActivityMoreHomeBinding
import com.woka.databinding.DialogBlogsBinding import com.woka.databinding.DialogBlogsBinding
import com.woka.googleads.FM
import com.woka.googleads.MORE_ACTIVITY import com.woka.googleads.MORE_ACTIVITY
import com.woka.modules.blogs.BlogsAdapter import com.woka.modules.blogs.BlogsAdapter
import com.woka.modules.blogs.BlogsRepository import com.woka.modules.blogs.BlogsRepository
@@ -37,6 +41,7 @@ import com.woka.utils.WokaBaseActivity
import com.woka.utils.hide import com.woka.utils.hide
import com.woka.utils.lightStatusBar import com.woka.utils.lightStatusBar
import com.woka.utils.show import com.woka.utils.show
import kotlinx.coroutines.launch
class MoreHomeActivity : WokaBaseActivity() { class MoreHomeActivity : WokaBaseActivity() {
@@ -92,18 +97,32 @@ class MoreHomeActivity : WokaBaseActivity() {
} }
private fun loadGoogleAds() { private fun loadGoogleAds() {
// ad container 1 lifecycleScope.launch {
val adView1 = AdView(this) AdsRepository.getADs()?.let { ads ->
adView1.adUnitId = MORE_ACTIVITY val fmAds = ads.filter { it.slug == ForPage.MORE.value }
adView1.setAdSize(AdSize(AdSize.FULL_WIDTH, 200))
binding.adsContainer.removeAllViews() if (fmAds.isNotEmpty()){
binding.adsContainer.addView(adView1) fmAds.first().google_ad?.let {
val adView1 = AdView(this@MoreHomeActivity)
adView1.adUnitId = MORE_ACTIVITY
adView1.setAdSize(AdSize(AdSize.FULL_WIDTH, 200))
adView1.loadAd( binding.adsContainer.removeAllViews()
AdRequest.Builder() binding.adsContainer.addView(adView1)
.build()
) adView1.loadAd(
AdRequest.Builder()
.build()
)
return@launch
}
}
}
binding.comingSoonCard.show()
binding.comingSoonTxt.show()
}
} }
private fun initBlogDialog(){ private fun initBlogDialog(){

View File

@@ -12,6 +12,7 @@ import androidx.activity.enableEdgeToEdge
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 com.jwplayer.pub.api.JWPlayer import com.jwplayer.pub.api.JWPlayer
import com.jwplayer.pub.api.PauseReason import com.jwplayer.pub.api.PauseReason
import com.jwplayer.pub.api.PlayReason import com.jwplayer.pub.api.PlayReason
@@ -32,6 +33,9 @@ import com.woka.userdata.userDataModels.VideoViewRequestData
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 com.woka.utils.toast
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
private const val TAG = "PlayerActivity_TAG" private const val TAG = "PlayerActivity_TAG"
@@ -177,17 +181,17 @@ class PlayerActivity : WokaBaseActivity(), FullscreenHandler {
adSchedule.add( adSchedule.add(
AdBreak.Builder() AdBreak.Builder()
.tag("https://pubads.g.doubleclick.net/gampad/ads?iu=/23204950200/VideoAd&description_url=https%3A%2F%2Fwokaland.com%2F&tfcd=0&npa=0&ad_type=audio_video&sz=640x480%7C1280x720&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator=") .tag("https://pubads.g.doubleclick.net/gampad/ads?iu=/23204950200/testingvideo&description_url=https%3A%2F%2Fwokaland.com&tfcd=0&npa=0&sz=640x180%7C1280x720%7C1280x720&min_ad_duration=0&max_ad_duration=30000&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator=&vad_type=linear")
.offset("pre") .offset("pre")
.build() .build()
) )
adSchedule.add( // adSchedule.add(
AdBreak.Builder() // AdBreak.Builder()
.tag("https://pubads.g.doubleclick.net/gampad/live/ads?iu=/23204950200/VideoAd&description_url=https%3A%2F%2Fwokaland.com%2F&tfcd=0&npa=0&ad_type=audio_video&sz=640x480%7C1280x720&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator=&nofb=1") // .tag("https://pubads.g.doubleclick.net/gampad/live/ads?iu=/23204950200/testingvideo&description_url=https%3A%2F%2Fwokaland.com&tfcd=0&npa=0&sz=640x180%7C1280x720%7C1280x720&gdfp_req=1&unviewed_position_start=1&output=vast&env=vp&impl=s&correlator=")
.offset("25%") // .offset("25%")
.build() // .build()
) // )
val imaAdvertising = ImaAdvertisingConfig.Builder() val imaAdvertising = ImaAdvertisingConfig.Builder()
.schedule(adSchedule) .schedule(adSchedule)

View File

@@ -127,7 +127,7 @@ class ShopActivity : WokaBaseActivity() {
private fun loadGoogleAds() { private fun loadGoogleAds() {
lifecycleScope.launch { lifecycleScope.launch {
AdsRepository.getADs()?.let { ads -> AdsRepository.getADs()?.let { ads ->
val fmAds = ads.filter { it.slug == ForPage.FM.value } val fmAds = ads.filter { it.slug == ForPage.SHOP_SUPER_CATEGORY.value }
if (fmAds.isNotEmpty()){ if (fmAds.isNotEmpty()){
fmAds.first().google_ad?.let { fmAds.first().google_ad?.let {

View File

@@ -67,6 +67,7 @@
/> />
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:id="@+id/coming_soon_card"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp" android:layout_marginHorizontal="15dp"

View File

@@ -69,14 +69,14 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:visibility="visible" android:visibility="gone"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/notification_view_holder" tools:listitem="@layout/notification_view_holder"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@id/ads_container"
app:layout_constraintTop_toBottomOf="@id/progress_bar" app:layout_constraintTop_toBottomOf="@id/progress_bar"
/> />
@@ -174,4 +174,13 @@
/> />
</LinearLayout> </LinearLayout>
<LinearLayout
android:id="@+id/ads_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -49,7 +49,7 @@
android:layout_height="0dp" android:layout_height="0dp"
android:background="#D3EFF8" android:background="#D3EFF8"
app:layout_constraintTop_toBottomOf="@id/toolbar" app:layout_constraintTop_toBottomOf="@id/toolbar"
app:layout_constraintBottom_toTopOf="@id/ads_container" app:layout_constraintBottom_toBottomOf="parent"
> >
<androidx.constraintlayout.widget.Guideline <androidx.constraintlayout.widget.Guideline
@@ -75,18 +75,15 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toTopOf="@id/ads_container"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
android:layout_marginBottom="15dp"
android:paddingBottom="15dp"
android:paddingTop="0dp"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
@@ -477,17 +474,16 @@
</RelativeLayout> </RelativeLayout>
<LinearLayout
android:id="@+id/ads_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_marginBottom="25dp"
app:layout_constraintBottom_toBottomOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id="@+id/ads_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toBottomOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>