官方文档地址:gMAX | SDK 集成指南 | Android / Amazon | 选择要集成的广告平台 | Support Center | AppLovin
目录
[3.初始化sdk 和展示广告](#3.初始化sdk 和展示广告)
一、新建一个Kotlin的安卓项目
二、导入max相应资源
1.在应用层级的build.gradle(app)中
Kotlin
plugins {
...
id("applovin-quality-service")
}
applovin {
apiKey = "<<ad-review-key>>"
}
...
dependencies {
implementation("com.applovin:applovin-sdk:+")
⋮
}
2.在根层级的build.gradle(project)中
Kotlin
buildscript {
dependencies {
classpath ("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+") //新增这行
}
}
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
}
3.在settings中添加仓库
新增下面注释标注的那行,其余的是国内镜像,看自己情况加
Kotlin
pluginManagement {
repositories {
maven( url ="https://maven.aliyun.com/repository/public" )
maven( url ="https://maven.aliyun.com/repository/google" )
maven( url ="https://maven.aliyun.com/repository/central" )
maven( url ="https://maven.aliyun.com/repository/gradle-plugin" )
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
maven (url = "https://artifacts.applovin.com/android") //主要是这行
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven( url ="https://maven.aliyun.com/repository/public" )
maven( url ="https://maven.aliyun.com/repository/google" )
maven( url ="https://maven.aliyun.com/repository/central" )
maven( url ="https://maven.aliyun.com/repository/gradle-plugin" )
maven (url = "https://artifacts.applovin.com/android") //主要是这行
google()
mavenCentral()
}
}
rootProject.name = "AdProject"
include(":app")
三、具体使用
1.新建自己的广告监听器
Kotlin
import android.util.Log
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
//MaxAdListener 是max广告中最基础的广告监听器,别的监听器都是继承他的
open class MyMaxAdListener : MaxAdListener {
//广告加载成功
override fun onAdLoaded(maxAd: MaxAd) {
Log.d("AppLovin", "Ad loaded.")
}
//广告加载失败
override fun onAdLoadFailed(adUnitId: String, error: MaxError) {
Log.d("AppLovin", "Ad failed to load: $error")
}
//广告展示失败
override fun onAdDisplayFailed(ad: MaxAd, error: MaxError) {
Log.d("AppLovin", "Ad failed to display: $error")
}
//广告被点击
override fun onAdClicked(maxAd: MaxAd) {
Log.d("AppLovin", "Ad clicked.")
}
//广告展示成功
override fun onAdDisplayed(maxAd: MaxAd) {
Log.d("AppLovin", "Ad displayed.")
}
//广告被隐藏(关闭)
override fun onAdHidden(maxAd: MaxAd) {
Log.d("AppLovin", "Ad hidden.")
}
}
Kotlin
import android.util.Log
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdViewAdListener
//横幅广告的监听器,新增了扩大和缩小回调
class MyMaxAdViewAdListener : MyMaxAdListener(), MaxAdViewAdListener {
override fun onAdExpanded(p0: MaxAd) {
Log.d("AppLovin", "Ad expanded.")
}
override fun onAdCollapsed(p0: MaxAd) {
Log.d("AppLovin", "Ad collapsed.")
}
}
Kotlin
//激励广告的监听器,新增一个获得奖励的回调,代表可以给用户发放奖励了
class MyMaxRewardedAdListener : MyMaxAdListener(), MaxRewardedAdListener {
override fun onUserRewarded(
p0: MaxAd,
p1: MaxReward
) {
Log.d("AppLovin", "User rewarded.")
}
}
2.写一个简单布局
XML
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">
<Button
android:id="@+id/bannerBt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="横幅广告"/>
<Button
android:id="@+id/interBt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="插屏广告"/>
<Button
android:id="@+id/rewardedBt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="激励广告"/>
</LinearLayout>
</FrameLayout>
3.初始化sdk 和展示广告
将下面代码中<< >>标注的参数换成自己的
Kotlin
import android.app.Activity
import android.os.Bundle
import android.util.Log
import android.view.ViewGroup
import android.widget.FrameLayout
import com.applovin.mediation.ads.MaxAdView
import com.applovin.mediation.ads.MaxInterstitialAd
import com.applovin.mediation.ads.MaxRewardedAd
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
class MaxActivity : Activity() {
val binding by lazy { ActivityMaxBinding.inflate(layoutInflater) }
private var adView: MaxAdView? = null //横幅广告
private lateinit var interstitialAd: MaxInterstitialAd //插屏广告
private lateinit var rewardedAd: MaxRewardedAd //激励视频
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
//初始化max
val initConfig =
AppLovinSdkInitializationConfiguration.builder("<<SDK-key>>")
.setMediationProvider(AppLovinMediationProvider.MAX)
.build()
AppLovinSdk.getInstance(this).initialize(initConfig) { sdkConfig ->
//初始化成功,开始加载广告
Log.d("AppLovin", "AppLovin SDK has been initialized")
createInterstitialAd()
createRewardedAd()
}
binding.bannerBt.setOnClickListener {
createBannerAd()
}
binding.interBt.setOnClickListener {
if (interstitialAd.isReady) {
interstitialAd.showAd()
} else {
createInterstitialAd()
}
}
binding.rewardedBt.setOnClickListener {
if (rewardedAd.isReady) {
rewardedAd.showAd()
} else {
createRewardedAd()
}
}
}
fun createBannerAd() {
adView = MaxAdView("<<banner 广告id>>", this)
adView?.setListener(MyMaxAdViewAdListener())
adView?.layoutParams = FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 300)
binding.main.addView(adView)
adView?.loadAd()
}
fun createInterstitialAd() {
interstitialAd = MaxInterstitialAd("<<插屏广告id>>", this)
interstitialAd.setListener(MyMaxAdListener())
interstitialAd.loadAd()
}
fun createRewardedAd() {
rewardedAd = MaxRewardedAd.getInstance("<<激励广告id>>")
rewardedAd.setListener(MyMaxRewardedAdListener())
rewardedAd.loadAd()
}
}
注:max广告是国外的,加载广告会特别慢,要收到load结果回调,大概要一分钟,有条件用外网,没有的话,很难load成功