Google ads integration.
This commit is contained in:
12
.idea/deploymentTargetDropDown.xml
generated
12
.idea/deploymentTargetDropDown.xml
generated
@@ -4,6 +4,18 @@
|
||||
<value>
|
||||
<entry key="app">
|
||||
<State>
|
||||
<runningDeviceTargetSelectedWithDropDown>
|
||||
<Target>
|
||||
<type value="RUNNING_DEVICE_TARGET" />
|
||||
<deviceKey>
|
||||
<Key>
|
||||
<type value="SERIAL_NUMBER" />
|
||||
<value value="RZCW41EJRPN" />
|
||||
</Key>
|
||||
</deviceKey>
|
||||
</Target>
|
||||
</runningDeviceTargetSelectedWithDropDown>
|
||||
<timeTargetWasSelectedWithDropDown value="2024-09-05T13:17:23.775124Z" />
|
||||
<targetsSelectedWithDialog>
|
||||
<Target>
|
||||
<type value="QUICK_BOOT_TARGET" />
|
||||
|
||||
@@ -128,6 +128,9 @@ dependencies {
|
||||
// optional - Kotlin Extensions and Coroutines support for Room
|
||||
implementation(libs.room.ktx)
|
||||
|
||||
// admob
|
||||
implementation(libs.play.services.ads)
|
||||
|
||||
implementation libs.firebase.analytics
|
||||
implementation libs.firebase.perf
|
||||
|
||||
|
||||
@@ -165,6 +165,16 @@
|
||||
<meta-data
|
||||
android:name="preloaded_fonts"
|
||||
android:resource="@array/preloaded_fonts" />
|
||||
|
||||
<property
|
||||
android:name="android.adservices.AD_SERVICES_CONFIG"
|
||||
android:resource="@xml/gma_ad_services_config"
|
||||
tools:replace="android:resource" />
|
||||
|
||||
<meta-data
|
||||
android:name="com.google.android.gms.ads.APPLICATION_ID"
|
||||
android:value="ca-app-pub-5699008063638916~5336678778"/>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -2,6 +2,9 @@ package com.woka
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Application
|
||||
import android.util.Log
|
||||
import com.google.android.gms.ads.MobileAds
|
||||
import com.google.android.gms.ads.RequestConfiguration
|
||||
import com.jwplayer.pub.api.license.LicenseUtil
|
||||
import com.onesignal.OneSignal
|
||||
import com.woka.advertisements.AdsRepository
|
||||
@@ -13,6 +16,7 @@ import com.woka.utils.ONESIGNAL_APP_ID
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.Arrays
|
||||
|
||||
class WokaApp: Application() {
|
||||
|
||||
@@ -36,6 +40,8 @@ class WokaApp: Application() {
|
||||
}
|
||||
|
||||
initOneSignal()
|
||||
|
||||
initAdmob()
|
||||
}
|
||||
|
||||
private fun initOneSignal(){
|
||||
@@ -48,4 +54,11 @@ class WokaApp: Application() {
|
||||
OneSignal.Notifications.requestPermission(false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun initAdmob(){
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
MobileAds.initialize(this@WokaApp)
|
||||
// MobileAds.setRequestConfiguration(RequestConfiguration.Builder().setTestDeviceIds(listOf("F895DC452659EA607EB688E47B041B20")).build())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,12 +3,23 @@ package com.woka.home.fragments
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.util.DisplayMetrics
|
||||
import android.util.Log
|
||||
import android.view.Display
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.bumptech.glide.Glide
|
||||
import com.google.android.gms.ads.AdListener
|
||||
import com.google.android.gms.ads.AdRequest
|
||||
import com.google.android.gms.ads.AdSize
|
||||
import com.google.android.gms.ads.AdView
|
||||
import com.google.android.gms.ads.LoadAdError
|
||||
import com.google.android.gms.ads.interstitial.InterstitialAd
|
||||
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback
|
||||
import com.jwplayer.pub.api.media.playlists.PlaylistItem
|
||||
import com.woka.R
|
||||
import com.woka.WokaApp
|
||||
@@ -47,7 +58,7 @@ class Home2Fragment : Fragment() {
|
||||
|
||||
override fun onAttach(context: Context) {
|
||||
super.onAttach(context)
|
||||
context.changeLocale(WokaApp.userPrefs?.appLanguage?:"en")
|
||||
context.changeLocale(WokaApp.userPrefs?.appLanguage ?: "en")
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
@@ -67,20 +78,48 @@ class Home2Fragment : Fragment() {
|
||||
|
||||
clickEvents()
|
||||
|
||||
loadGoogleAds()
|
||||
|
||||
return binding.root
|
||||
}
|
||||
|
||||
private fun loadGoogleAds() {
|
||||
binding.adView.adListener = object : AdListener() {
|
||||
override fun onAdFailedToLoad(p0: LoadAdError) {
|
||||
super.onAdFailedToLoad(p0)
|
||||
Log.d("aditya_ad_testing", "onAdFailedToLoad: $p0")
|
||||
}
|
||||
}
|
||||
|
||||
binding.adView.loadAd(
|
||||
AdRequest.Builder()
|
||||
.build()
|
||||
)
|
||||
|
||||
InterstitialAd.load(requireContext(),"ca-app-pub-5699008063638916/6300144761",
|
||||
AdRequest.Builder().build(), object : InterstitialAdLoadCallback() {
|
||||
override fun onAdFailedToLoad(adError: LoadAdError) {
|
||||
Log.d("aditya_ad_testing", "Interrstitial onAdFailedToLoad: $adError")
|
||||
}
|
||||
|
||||
override fun onAdLoaded(interstitialAd: InterstitialAd) {
|
||||
Log.d("aditya_ad_testing", "AdLoaded:")
|
||||
interstitialAd.show(requireActivity())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun iniViews() {
|
||||
if (viewModel.isHomeBackgroundBlurred){
|
||||
if (viewModel.isHomeBackgroundBlurred) {
|
||||
binding.playerView.hide()
|
||||
}else{
|
||||
} else {
|
||||
binding.playerView.show()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (viewModel.player?.isPlaying == false){
|
||||
if (viewModel.player?.isPlaying == false) {
|
||||
viewModel.player?.play()
|
||||
}
|
||||
|
||||
@@ -91,7 +130,7 @@ class Home2Fragment : Fragment() {
|
||||
super.onPause()
|
||||
if (viewModel.player?.isPlaying == true) viewModel.player?.pause()
|
||||
|
||||
if (viewModel.isHomeBackgroundBlurred){
|
||||
if (viewModel.isHomeBackgroundBlurred) {
|
||||
binding.playerView.hide()
|
||||
}
|
||||
}
|
||||
@@ -101,7 +140,7 @@ class Home2Fragment : Fragment() {
|
||||
binding.playerView.useController = false
|
||||
}
|
||||
|
||||
private fun clickEvents(){
|
||||
private fun clickEvents() {
|
||||
binding.apply {
|
||||
playerCard.setOnClickListener {
|
||||
liveTv.performClick()
|
||||
@@ -162,10 +201,12 @@ class Home2Fragment : Fragment() {
|
||||
.build()
|
||||
)
|
||||
},
|
||||
mutableListOf(VideoViewData(
|
||||
0,
|
||||
ContentType.TEASER
|
||||
))
|
||||
mutableListOf(
|
||||
VideoViewData(
|
||||
0,
|
||||
ContentType.TEASER
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
putExtra(PlayerActivity.EXTRA_PLAY_INDEX, 0)
|
||||
@@ -209,37 +250,49 @@ class Home2Fragment : Fragment() {
|
||||
initPlayerView()
|
||||
}
|
||||
|
||||
StreamingUrlRepository.liveStreamLiveData.observe(viewLifecycleOwner){
|
||||
when (it){
|
||||
StreamingUrlRepository.liveStreamLiveData.observe(viewLifecycleOwner) {
|
||||
when (it) {
|
||||
is ApiResult.Error -> {
|
||||
progressView.hide()
|
||||
binding.liveTv.setOnClickListener {
|
||||
StreamingUrlRepository.loadLiveStreamingUrls()
|
||||
}
|
||||
}
|
||||
|
||||
is ApiResult.Loading -> {
|
||||
progressView.show()
|
||||
}
|
||||
|
||||
is ApiResult.Success -> {
|
||||
it.data?.live_data?.let {urls ->
|
||||
if (urls.isNotEmpty()){
|
||||
urls.first()?.let {liveData ->
|
||||
it.data?.live_data?.let { urls ->
|
||||
if (urls.isNotEmpty()) {
|
||||
urls.first()?.let { liveData ->
|
||||
progressView.hide()
|
||||
binding.liveTv.setOnClickListener {
|
||||
activity?.let {activity ->
|
||||
startActivity(Intent(activity, LiveStreamPlayerActivity::class.java).apply {
|
||||
putExtra(LiveStreamPlayerActivity.EXTRA_LIVE_STREAM_ID, liveData.id)
|
||||
putExtra(LiveStreamPlayerActivity.EXTRA_LIVE_STREAM_URL, liveData.live_url?.hd_url_en)
|
||||
})
|
||||
activity?.let { activity ->
|
||||
startActivity(
|
||||
Intent(
|
||||
activity,
|
||||
LiveStreamPlayerActivity::class.java
|
||||
).apply {
|
||||
putExtra(
|
||||
LiveStreamPlayerActivity.EXTRA_LIVE_STREAM_ID,
|
||||
liveData.id
|
||||
)
|
||||
putExtra(
|
||||
LiveStreamPlayerActivity.EXTRA_LIVE_STREAM_URL,
|
||||
liveData.live_url?.hd_url_en
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
it.data?.live_fm_data?.let {fmData ->
|
||||
it.data?.live_fm_data?.let { fmData ->
|
||||
binding.wokaFm.setOnClickListener {
|
||||
activity?.let {activity ->
|
||||
activity?.let { activity ->
|
||||
startActivity(Intent(activity, FMActivity::class.java).apply {
|
||||
putExtra(FMActivity.EXTRA_FM_URL, fmData.live_fm_url)
|
||||
putExtra(FMActivity.EXTRA_FM_ID, fmData.id)
|
||||
@@ -262,8 +315,9 @@ class Home2Fragment : Fragment() {
|
||||
.into(profileImage)
|
||||
}
|
||||
|
||||
val name = if (WokaApp.userPrefs?.userType == UserType.GUEST) WokaApp.userPrefs?.guestUserName
|
||||
else data?.result?.fullname
|
||||
val name =
|
||||
if (WokaApp.userPrefs?.userType == UserType.GUEST) WokaApp.userPrefs?.guestUserName
|
||||
else data?.result?.fullname
|
||||
|
||||
if (!name.isNullOrEmpty()) {
|
||||
val text = ", ${name.split(" ")[0]}"
|
||||
@@ -275,13 +329,14 @@ class Home2Fragment : Fragment() {
|
||||
companion object {
|
||||
private var instance: Home2Fragment? = null
|
||||
private val any = Any()
|
||||
fun getInstance(): Home2Fragment{
|
||||
return synchronized(any){
|
||||
if (instance == null){
|
||||
fun getInstance(): Home2Fragment {
|
||||
return synchronized(any) {
|
||||
if (instance == null) {
|
||||
instance = Home2Fragment()
|
||||
}
|
||||
|
||||
return@synchronized instance!! }
|
||||
return@synchronized instance!!
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,6 @@ import android.net.Network
|
||||
import android.net.NetworkRequest
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.HapticFeedbackConstants
|
||||
import android.view.View.GONE
|
||||
import android.view.View.VISIBLE
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.woka.onboard.fragments
|
||||
|
||||
import android.animation.Animator
|
||||
import android.content.Intent
|
||||
import android.media.MediaPlayer
|
||||
import android.os.Bundle
|
||||
@@ -67,8 +66,16 @@ class SplashFragment : Fragment(), Observer<ApiResult<UserDataResponse>?> {
|
||||
|
||||
if (userPrefs?.userType == UserType.CHILD || userPrefs?.userType == UserType.GUARDIAN) {
|
||||
// some type of user is logged in
|
||||
// thus, loading data
|
||||
// thus, loading user data
|
||||
userPrefs?.userLiveData?.observe(viewLifecycleOwner, this)
|
||||
userPrefs?.loadUserData()
|
||||
}else{
|
||||
// no user is logged in
|
||||
// listening to version history
|
||||
lifecycleScope.launch {
|
||||
delay(4000)
|
||||
listenVersionHistory()
|
||||
}
|
||||
}
|
||||
|
||||
clickEvents()
|
||||
@@ -103,24 +110,6 @@ class SplashFragment : Fragment(), Observer<ApiResult<UserDataResponse>?> {
|
||||
private fun animateLogo() {
|
||||
binding.logo.animate().scaleXBy(1f).scaleYBy(1f)
|
||||
.setDuration(2000)
|
||||
.setListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(animation: Animator) {}
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
lifecycleScope.launch {
|
||||
delay(2000)
|
||||
if (userPrefs?.userType == UserType.CHILD || userPrefs?.userType == UserType.GUARDIAN) {
|
||||
// listening to user data
|
||||
userPrefs?.userLiveData?.observe(viewLifecycleOwner, this@SplashFragment)
|
||||
}else{
|
||||
listenVersionHistory()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(animation: Animator) {}
|
||||
override fun onAnimationRepeat(animation: Animator) {}
|
||||
|
||||
})
|
||||
.start()
|
||||
}
|
||||
|
||||
@@ -212,9 +201,12 @@ class SplashFragment : Fragment(), Observer<ApiResult<UserDataResponse>?> {
|
||||
binding.progressBar.show()
|
||||
}
|
||||
is ApiResult.Success -> {
|
||||
binding.retryBtn.hide()
|
||||
binding.progressBar.hide()
|
||||
listenVersionHistory()
|
||||
lifecycleScope.launch {
|
||||
delay(4000)
|
||||
binding.retryBtn.hide()
|
||||
binding.progressBar.hide()
|
||||
listenVersionHistory()
|
||||
}
|
||||
}
|
||||
|
||||
null -> {}
|
||||
|
||||
@@ -531,6 +531,16 @@
|
||||
|
||||
</HorizontalScrollView>
|
||||
|
||||
<com.google.android.gms.ads.AdView
|
||||
xmlns:ads="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/ad_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="25dp"
|
||||
ads:adSize="320x100"
|
||||
ads:adUnitId="ca-app-pub-5699008063638916/6755919260" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/coming_soon_txt"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -13,6 +13,7 @@ navigationFragmentKtx = "2.7.7"
|
||||
navigationUiKtx = "2.7.7"
|
||||
navigationSafeArgs = "2.7.7"
|
||||
onesignal = "5.1.20"
|
||||
playServicesAds = "23.3.0"
|
||||
roomKtx = "2.6.1"
|
||||
roomRuntime = "2.6.1"
|
||||
ksp = "2.0.0-1.0.24"
|
||||
@@ -35,6 +36,7 @@ androidx-constraintlayout = { group = "androidx.constraintlayout", name = "const
|
||||
androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigationFragmentKtx" }
|
||||
androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigationUiKtx" }
|
||||
onesignal = { module = "com.onesignal:OneSignal", version.ref = "onesignal" }
|
||||
play-services-ads = { module = "com.google.android.gms:play-services-ads", version.ref = "playServicesAds" }
|
||||
room-ktx = { module = "androidx.room:room-ktx", version.ref = "roomKtx" }
|
||||
google-services = { group = "com.google.gms", name = "google-services", version.ref = "googleServices" }
|
||||
firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics", version.ref = "firebaseAnalytics" }
|
||||
|
||||
Reference in New Issue
Block a user