Compose] adMob 연결방법
Compose를 이용하여 앱 개발을 하고, 광고를 넣으려고 하면 마주하는 첫번째 문제다.
아직AdMob에서는 정식적으로 compose를 지원하지 않기 때문에 다른방법을 사용해야 한다.
아래와 같이 AdvertView를 정의하여 사용하자
@Composable
fun AdvertView(modifier: Modifier = Modifier) {
val isInEditMode = LocalInspectionMode.current
if (isInEditMode) {
Text(
modifier = modifier
.fillMaxWidth()
.background(Color.Red)
.padding(horizontal = 2.dp, vertical = 6.dp),
textAlign = TextAlign.Center,
color = Color.White,
text = "Advert Here",
)
} else {
AndroidView(
modifier = modifier.fillMaxWidth(),
factory = { context ->
AdView(context).apply {
adSize = AdSize.BANNER
adUnitId = context.getString("배너id")
loadAd(AdRequest.Builder().build())
}
},
update = {
it.loadAd(AdRequest.Builder().build())
}
)
}
}
그리고 onCreate 부분에 다음과 같이 사용해서 적용시켰다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
loadAD()
setContent {
BaseApp(title = title.value, bodyContent = {
MainView()
})
}
MobileAds.initialize(this) { }
}
private fun loadAD() {
val adRequest = AdRequest.Builder().build()
InterstitialAd.load(
this,
getString("배너ID"),
adRequest,
object : InterstitialAdLoadCallback() {
override fun onAdFailedToLoad(p0: LoadAdError) {
super.onAdFailedToLoad(p0)
mInterstitialAd = null
}
override fun onAdLoaded(p0: InterstitialAd) {
super.onAdLoaded(p0)
mInterstitialAd = p0
mInterstitialAd?.show(this@MainActivity)
}
})
}
여기서 BaseApp은 다음과 같이 구성되어있다.
@Composable
fun BaseApp(
title: String = "",
bodyContent: @Composable () -> Unit
) {
val scaffoldState = rememberScaffoldState(rememberDrawerState(DrawerValue.Closed))
Scaffold(
scaffoldState = scaffoldState,
topBar = {
TopAppBar(
title = {
Text(
text = title,
color = MyGray,
fontFamily = Font.mapleStory,
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth()
)
},
backgroundColor = MyWhite
)
},
drawerContent = { Text(text = "drawerContent") },
bottomBar = { AdvertView() }
) { innerPadding ->
Box(modifier = Modifier.padding(innerPadding)) {
bodyContent()
}
}
}
이상입니다.
Author And Source
이 문제에 관하여(Compose] adMob 연결방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jmseb3/Compose-adMob-연결방법저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)