콘텐츠 상세 - 배너 광고 추가

This commit is contained in:
klaus 2023-09-14 03:14:48 +09:00
parent f6cbaffd3b
commit 26e43bd548
5 changed files with 61 additions and 1 deletions

View File

@ -52,6 +52,12 @@ android {
buildConfigField 'String', 'BOOTPAY_APP_ID', '"64c35be1d25985001dc50c87"' buildConfigField 'String', 'BOOTPAY_APP_ID', '"64c35be1d25985001dc50c87"'
buildConfigField 'String', 'AGORA_APP_ID', '"e34e40046e9847baba3adfe2b8ffb4f6"' buildConfigField 'String', 'AGORA_APP_ID', '"e34e40046e9847baba3adfe2b8ffb4f6"'
buildConfigField 'String', 'AGORA_APP_CERTIFICATE', '"15cadeea4ba94ff7b091c9a10f4bf4a6"' buildConfigField 'String', 'AGORA_APP_CERTIFICATE', '"15cadeea4ba94ff7b091c9a10f4bf4a6"'
buildConfigField 'String', 'ADMOB_FREE_CONTENT_BANNER_UNIT_ID', '"ca-app-pub-1299501215847962/8351317711"'
// manifest
manifestPlaceholders["ADMOB_APP_ID"] = "ca-app-pub-1299501215847962~1110535210"
resValue 'string', 'admob_free_content_banner_unit_id', 'ca-app-pub-1299501215847962/8351317711'
} }
debug { debug {
@ -63,6 +69,12 @@ android {
buildConfigField 'String', 'BOOTPAY_APP_ID', '"6242a7772701800023f68b2e"' buildConfigField 'String', 'BOOTPAY_APP_ID', '"6242a7772701800023f68b2e"'
buildConfigField 'String', 'AGORA_APP_ID', '"b96574e191a9430fa54c605528aa3ef7"' buildConfigField 'String', 'AGORA_APP_ID', '"b96574e191a9430fa54c605528aa3ef7"'
buildConfigField 'String', 'AGORA_APP_CERTIFICATE', '"ae18ade3afcf4086bd4397726eb0654c"' buildConfigField 'String', 'AGORA_APP_CERTIFICATE', '"ae18ade3afcf4086bd4397726eb0654c"'
buildConfigField 'String', 'ADMOB_FREE_CONTENT_BANNER_UNIT_ID', '"ca-app-pub-3940256099942544/6300978111"'
// manifest
manifestPlaceholders["ADMOB_APP_ID"] = "ca-app-pub-1299501215847962~3769074871"
resValue 'string', 'admob_free_content_banner_unit_id', 'ca-app-pub-3940256099942544/6300978111'
} }
} }
compileOptions { compileOptions {
@ -148,4 +160,6 @@ dependencies {
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
implementation "com.michalsvec:single-row-calednar:1.0.0" implementation "com.michalsvec:single-row-calednar:1.0.0"
implementation 'com.google.android.gms:play-services-ads:22.3.0'
} }

View File

@ -135,5 +135,9 @@
android:name="com.google.firebase.messaging.default_notification_channel_id" android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id" /> android:value="@string/default_notification_channel_id" />
<!-- [END fcm_default_channel] --> <!-- [END fcm_default_channel] -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="${ADMOB_APP_ID}" />
</application> </application>
</manifest> </manifest>

View File

@ -1,10 +1,14 @@
package kr.co.vividnext.sodalive.app package kr.co.vividnext.sodalive.app
import android.app.Application import android.app.Application
import android.content.Context
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import com.google.android.gms.ads.MobileAds
import com.google.android.gms.common.ConnectionResult
import com.google.android.gms.common.GoogleApiAvailability
import com.orhanobut.logger.AndroidLogAdapter import com.orhanobut.logger.AndroidLogAdapter
import com.orhanobut.logger.Logger import com.orhanobut.logger.Logger
import kr.co.vividnext.sodalive.BuildConfig import kr.co.vividnext.sodalive.BuildConfig
@ -26,6 +30,12 @@ class SodaLiveApp : Application() {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
SharedPreferenceManager.init(applicationContext) SharedPreferenceManager.init(applicationContext)
if (isGooglePlayServicesAvailable(this)) {
MobileAds.initialize(this) {
Logger.e("ADMOB 초기화 - ${it.adapterStatusMap}")
}
}
} }
private fun isDebuggable(): Boolean { private fun isDebuggable(): Boolean {
@ -47,4 +57,10 @@ class SodaLiveApp : Application() {
return debuggable return debuggable
} }
private fun isGooglePlayServicesAvailable(context: Context): Boolean {
val googleApiAvailability = GoogleApiAvailability.getInstance()
val resultCode = googleApiAvailability.isGooglePlayServicesAvailable(context)
return resultCode == ConnectionResult.SUCCESS
}
} }

View File

@ -20,6 +20,7 @@ import coil.load
import coil.transform.CircleCropTransformation import coil.transform.CircleCropTransformation
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions import com.bumptech.glide.request.RequestOptions
import com.google.android.gms.ads.AdRequest
import com.google.gson.Gson import com.google.gson.Gson
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService
@ -95,6 +96,7 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
binding.adView.resume()
val intentFilter = IntentFilter(Constants.ACTION_AUDIO_CONTENT_RECEIVER) val intentFilter = IntentFilter(Constants.ACTION_AUDIO_CONTENT_RECEIVER)
registerReceiver(audioContentReceiver, intentFilter) registerReceiver(audioContentReceiver, intentFilter)
@ -104,8 +106,14 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
} }
override fun onPause() { override fun onPause() {
super.onPause()
unregisterReceiver(audioContentReceiver) unregisterReceiver(audioContentReceiver)
binding.adView.pause()
super.onPause()
}
override fun onDestroy() {
binding.adView.destroy()
super.onDestroy()
} }
override fun setupView() { override fun setupView() {
@ -262,6 +270,12 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
} }
} }
private fun setupAdMob() {
val adRequest = AdRequest.Builder().build()
binding.adView.visibility = View.VISIBLE
binding.adView.loadAd(adRequest)
}
private fun donation(can: Int, message: String) { private fun donation(can: Int, message: String) {
viewModel.donation(audioContentId, can, message) { viewModel.donation(audioContentId, can, message) {
viewModel.getAudioContentDetail(audioContentId = audioContentId) { finish() } viewModel.getAudioContentDetail(audioContentId = audioContentId) { finish() }
@ -390,6 +404,8 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
isAlertPreview = it.creator.creatorId != SharedPreferenceManager.userId && isAlertPreview = it.creator.creatorId != SharedPreferenceManager.userId &&
!it.existOrdered && !it.existOrdered &&
it.price > 0 it.price > 0
if ((!it.existOrdered && it.price > 0) || it.price <= 0) setupAdMob()
} }
viewModel.isContentPlayLoopLiveData.observe(this) { viewModel.isContentPlayLoopLiveData.observe(this) {

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -168,6 +169,15 @@
tools:src="@drawable/btn_player_repeat" /> tools:src="@drawable/btn_player_repeat" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.gms.ads.AdView
android:id="@+id/ad_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="13.3dp"
android:visibility="gone"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/admob_free_content_banner_unit_id" />
<RelativeLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"