安卓接入Max广告源

官方文档地址:gMAX | SDK 集成指南 | Android / Amazon | 选择要集成的广告平台 | Support Center | AppLovin

目录

一、新建一个Kotlin的安卓项目

二、导入max相应资源

1.在应用层级的build.gradle(app)中

2.在根层级的build.gradle(project)中

3.在settings中添加仓库

三、具体使用

1.新建自己的广告监听器

2.写一个简单布局

[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成功

相关推荐
_李小白17 分钟前
【Android FrameWork】第三十天:Surface创建流程解析
android
元亓亓亓29 分钟前
考研408--操作系统--day8--操作系统--虚拟内存&请求分页&页面置换/分配
android·java·开发语言·虚拟内存
有位神秘人1 小时前
Android的Compose系列之文本TextView
android
Engineer-Jsp1 小时前
Flutter 开发 Android 原生开发神器 flutter_api_stub
android·flutter
惟恋惜2 小时前
Jetpack Compose 多页面架构实战:从 Splash 到底部导航,每个 Tab 拥有独立 ViewModel
android·ui·架构·android jetpack
ab_dg_dp2 小时前
Android bugreportz 源码分析
android
木风小助理2 小时前
如何破解 MySQL 死锁?核心原则与实操方法
android
小吴学不废Java2 小时前
MySQL慢查询日志分析
android·adb
TechMix3 小时前
【用法总结】抓取main_log、events_log、kernel_log日志的方法
android