官方文档:gKwai Network_Android SDK 接入说明 | Kwai Network_Android SDK Intergration Description - 轻雀文档
目录
[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
}
}
}