安卓接入Kwai广告源

官方文档:gKwai Network_Android SDK 接入说明 | Kwai Network_Android SDK Intergration Description - 轻雀文档

目录

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

二、环境配置

1.在应用级的build.gradle(app)导包

2、在gradle.propertie文件中新增配置

3、添加权限

三、具体使用

1.新建广告监听器

2.写一个简单的布局

[3.初始化sdk 和展示广告](#3.初始化sdk 和展示广告)


一、新建一个Kotlin的安卓项目
二、环境配置
1.在应用级的build.gradle(app)导包
Groovy 复制代码
//下面这两个包在新建项目的时候会自动导入
//    implementation(libs.androidx.appcompat)
//    implementation(libs.material)

    implementation("io.github.kwainetwork:adImpl:1.2.19")
    implementation("io.github.kwainetwork:adApi:1.2.19")
    implementation("androidx.media3:media3-exoplayer:1.0.0-alpha01")
    implementation("androidx.annotation:annotation:1.2.0")
    implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
2、在gradle.propertie文件中新增配置

主要是要使用AndroidX环境

Groovy 复制代码
## Android 插件会使用对应的 AndroidX 库而非支持库。| The Android plugin will use the corresponding AndroidX repository instead of the support repository.
android.useAndroidX=true
## Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX。| AndroidX。The Android plugin automatically migrates existing third-party repositories to use AndroidX by rewriting their binaries.
android.enableJetifier=true
3、添加权限

在App的AndroidManifest.xml文件中,添加如下权限

Groovy 复制代码
<!--联网权限--> 
<uses-permission android:name="android.permission.INTERNET" />
三、具体使用
1.新建广告监听器
Kotlin 复制代码
import android.util.Log
import com.kwai.network.sdk.constant.KwaiError
import com.kwai.network.sdk.loader.business.reward.interf.IKwaiRewardAdListener

/**
 * 这个是激励广告行为的回调 | This is an reward ad behavior callback 
 */
class RewardAdListener : IKwaiRewardAdListener {
    private val TAG = "RewardAdListener"
    override fun onAdShow() {
        Log.i(TAG, "onAdShow")
    }

    override fun onAdShowFailed(error: KwaiError) {
        Log.i(TAG, "onAdShowFailed code = ${error.code} msg = ${error.msg}")
    }

    override fun onAdClick() {
        Log.i(TAG, "onAdClick")
    }

    override fun onAdPlayComplete() {
        Log.i(TAG, "onAdPlayComplete")
    }

    override fun onRewardEarned() {
        // 可以在这里,通过mKwaiRewardAd拿到广告的价格,发放奖励 | It is possible to get the price of the ads through mKwaiRewardAd to give out rewards
        Log.i(TAG, "onAdEarned")
    }

    override fun onAdClose() {
        Log.i(TAG, "onAdClose")
    }
}
Kotlin 复制代码
import android.content.Context
import android.util.Log
import android.widget.Toast
import com.kwai.network.sdk.constant.KwaiError
import com.kwai.network.sdk.loader.business.reward.data.KwaiRewardAd
import com.kwai.network.sdk.loader.common.interf.AdLoadListener

/**
 * 这个回调,是广告加载成功或者失败的回调
 */
class RewardAdLoadListener(val context: Context, val successCallBack : (kwaiRewardAd: KwaiRewardAd)-> Unit) : AdLoadListener<KwaiRewardAd> {
    private val TAG = "RewardAdLoadListener"

    override fun onAdLoadStart(trackId: String?) {
        Log.i(TAG, "onAdLoadStart")
        Toast.makeText(context, "onAdLoadStart", Toast.LENGTH_SHORT).show()
    }

    override fun onAdLoadSuccess(trackId: String?, kwaiRewardAd: KwaiRewardAd) {
        val msg = "onAdLoaded: ${kwaiRewardAd.price}"
        Log.i(TAG, msg)
        successCallBack.invoke(kwaiRewardAd)
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
    }

    override fun onAdLoadFailed(trackId: String?, kwaiError: KwaiError) {
        val msg = "onAdLoadFailed code = ${kwaiError.code} msg = ${kwaiError.msg}"
        Log.i(TAG, msg)
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
    }
}
Kotlin 复制代码
import android.util.Log
import com.kwai.network.sdk.constant.KwaiError
import com.kwai.network.sdk.loader.business.interstitial.interf.IKwaiInterstitialAdListener

/**
 * 插屏广告页面状态监听 | Interstitial ads page status listening
 */
class InterstitialAdListener : IKwaiInterstitialAdListener {
    val TAG: String = "interstitial"
    override fun onAdShow() {
        Log.i(TAG, "onAdShow")
    }

    override fun onAdShowFailed(error: KwaiError) {
        Log.i(TAG, "onAdShowFailed code = ${error.code} msg = ${error.msg}")
    }

    override fun onAdClick() {
        Log.i(TAG, "onAdClick")
    }

    override fun onAdClose() {
        Log.i(TAG, "onAdClose")
    }

    override fun onAdPlayComplete() {
        Log.i(TAG, "onAdPlayComplete")
    }
}
Kotlin 复制代码
import android.content.Context
import android.util.Log
import android.widget.Toast
import com.kwai.network.sdk.constant.KwaiError
import com.kwai.network.sdk.loader.business.interstitial.data.KwaiInterstitialAd
import com.kwai.network.sdk.loader.common.interf.AdLoadListener

/**
 * 插屏广告加载监听
 */
class InterstitialAdLoadListener(val context: Context , val successCallBack : (kwaiInterstitialAd : KwaiInterstitialAd)-> Unit) : AdLoadListener<KwaiInterstitialAd> {
    val TAG: String = "interstitial"
    override fun onAdLoadStart(trackId: String?) {
        Log.i(TAG, "onAdLoadStart")
        Toast.makeText(context, "onAdLoadStart", Toast.LENGTH_SHORT).show()
    }

    override fun onAdLoadSuccess(trackId: String?, kwaiInterstitialAd: KwaiInterstitialAd) {
        val msg = "onAdLoaded: ${kwaiInterstitialAd.price}"
        Log.i(TAG, msg)
        successCallBack.invoke(kwaiInterstitialAd)
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
    }

    override fun onAdLoadFailed(trackId: String?, kwaiError: KwaiError) {
        val msg = "onAdLoadFailed code = ${kwaiError.code} msg = ${kwaiError.msg}"
        Log.i(TAG, msg)
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
    }
}
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/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 com.kwai.network.sdk.KwaiAdSDK
import com.kwai.network.sdk.api.KwaiInitCallback
import com.kwai.network.sdk.api.SdkConfig
import com.kwai.network.sdk.loader.business.interstitial.data.KwaiInterstitialAd
import com.kwai.network.sdk.loader.business.interstitial.data.KwaiInterstitialAdConfig
import com.kwai.network.sdk.loader.business.interstitial.data.KwaiInterstitialAdRequest
import com.kwai.network.sdk.loader.business.reward.data.KwaiRewardAd
import com.kwai.network.sdk.loader.business.reward.data.KwaiRewardAdConfig
import com.kwai.network.sdk.loader.business.reward.data.KwaiRewardAdRequest
import com.kwai.network.sdk.loader.common.interf.IKwaiAdLoader

class KwaiActivity : Activity() {

    private var mKwaiRewardAd: KwaiRewardAd? = null
    private var mKwaiRewardAdAdLoader: IKwaiAdLoader<KwaiRewardAdRequest?>? = null

    private var mKwaiInterstitialAd: KwaiInterstitialAd? = null
    private var mKwaiInterstitialAdLoader: IKwaiAdLoader<KwaiInterstitialAdRequest?>? = null


    val binding by lazy { ActivityKwaiBinding.inflate(layoutInflater) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        initKwaiSDK()

        binding.backImg.setOnClickListener {
            finish()
        }

        binding.interBt.setOnClickListener {
            //展示插屏广告
            if (mKwaiInterstitialAd != null && mKwaiInterstitialAd!!.isReady ){
                mKwaiInterstitialAd!!.show(this)
            }
        }
        binding.rewardedBt.setOnClickListener {
            //展示激励广告
            if (mKwaiRewardAd != null && mKwaiRewardAd!!.isReady ){
                mKwaiRewardAd!!.show(this)
            }
        }
    }

    fun initKwaiSDK() {
        val config = SdkConfig.Builder()
            .appId("<< appid >>")
            .token("<< token >>")
            .setInitCallback(object : KwaiInitCallback {
                override fun onSuccess() {
                    Log.d("Kwai", "kwai init success")
                    loadRewardAd()
                    loadInterstitialAd()
                }

                override fun onFail(code: Int, msg: String?) {
                    Log.d("Kwai", "kwai init fail")
                }

            })
            .build()
        KwaiAdSDK.init(this, config)
    }

    //加载激励广告
    private fun loadRewardAd() {
        val loaderManager = KwaiAdSDK.getKwaiAdLoaderManager()
        if (loaderManager != null) {
            mKwaiRewardAdAdLoader = loaderManager.buildRewardAdLoader(
                KwaiRewardAdConfig.Builder(RewardAdLoadListener(this){
                    mKwaiRewardAd = it
                })
                    .withKwaiRewardAdListener(RewardAdListener())
                    .build()
            )
            // 开始发起请求 | Starting a request
            val kwaiRewardAdRequest = KwaiRewardAdRequest("<< 激励广告id >>")
            mKwaiRewardAdAdLoader!!.loadAd(kwaiRewardAdRequest)
        }
    }


    //加载插屏广告
    private fun loadInterstitialAd() {

        val loaderManager = KwaiAdSDK.getKwaiAdLoaderManager()
        if (loaderManager != null) {
            mKwaiInterstitialAdLoader = loaderManager.buildInterstitialAdLoader(
                KwaiInterstitialAdConfig.Builder(InterstitialAdLoadListener(this){
                    mKwaiInterstitialAd = it
                })
                    .withKwaiInterstitialAdListener(InterstitialAdListener())
                    .build()
            )
            // 开始发起请求 | Starting a request
            val kwaiInterstitialAdRequest = KwaiInterstitialAdRequest("<< 插屏广告id >>")
            mKwaiInterstitialAdLoader!!.loadAd(kwaiInterstitialAdRequest)
        }
    }

    override fun onDestroy() {
        super.onDestroy()
        if (mKwaiRewardAdAdLoader != null){
            mKwaiRewardAdAdLoader?.release()
            mKwaiRewardAdAdLoader = null
        }
        if (mKwaiInterstitialAdLoader != null){
            mKwaiInterstitialAdLoader?.release()
            mKwaiInterstitialAdLoader = null
        }
    }
}
相关推荐
木易士心34 分钟前
Android Handler 机制原理详解
android·app
用户20187928316740 分钟前
CoroutineDispatcher的"自由精灵" - Dispatchers.Unconfined
android
用户20187928316741 分钟前
用 “奶茶连锁店的部门分工” 理解各种 CoroutineScope
android
Coffeeee1 小时前
Labubu很难买?那是因为还没有用Compose来画一个
前端·kotlin·android jetpack
黄额很兰寿1 小时前
深入源码理解LiveData的实现原理
android
黄额很兰寿1 小时前
flow 的冷流和热流 是设么有什么区别?
android
Digitally2 小时前
如何将 Android 联系人备份到 Mac 的 4 种简单
android·macos
2501_915918413 小时前
iOS 混淆与 IPA 加固一页式行动手册(多工具组合实战 源码成品运维闭环)
android·运维·ios·小程序·uni-app·iphone·webview
不吃凉粉10 小时前
Android Studio USB串口通信
android·ide·android studio
zhangphil10 小时前
android studio设置大内存,提升编译速度
android·android studio