Android SDK 集成
使用 Gradle 集成 LevelPlay Android SDK 或手动下载并配置 app 生命周期、权限和广告单元监听器。
阅读时间11 分钟最后更新于 2 天前
先决条件
- 我们支持 Android 操作系统版本 4.4(API 级别 19)及更高版本。
- 支持的最低 Kotlin 版本为 1.7.0。
步骤 1.将 LevelPlay SDK 添加到项目中
LevelPlay SDK 支持 Gradle 依赖关系和手动下载机制来集成我们的 SDK:
Gradle
-
将以下代码添加到您的应用级别 build.gradle 文件的 repository 部分中:repositories { mavenCentral()}
-
将以下代码添加到 dependencies 部分中:
dependencies { implementation 'com.unity3d.ads-mediation:mediation-sdk:9.5.0'}
Gradle 版本 7+
如果您使用的是 Gradle 版本 7+,请更新 Settings.gradle 文件的代码仓库部分,而不是构建.gradle。请注意,代码仓库部分应包含在 dependencyResolutionManagement 部分中:
repositories { mavenCentral()}
手动下载
- 下载 Android SDK 9.5.0 版
- 将 .AAR 文件作为库项目导入。
- 如果使用 Android Studio,请下载 .AAR 文件并作为依赖项添加到您自己的模块。
- 转到文件 > New > New Module > Import .AAR,然后导航到 .AAR 文件的下载位置。
- 注意:清单活动包含在 AAR 中。
- 确保将以下内容添加到构建.gradle 文件的 dependencies 部分:
implementation(name: 'mediation-sdk-9.5.0', ext:'aar')
- 从 LevelPlay SDK 7.0.4+ 开始,必须将 Kotlin JAR 添加到项目中。您可以在此处阅读有关 Kotlin 支持的更多信息。
可选:手动 JAR 集成
如果在项目中使用 mediation-SDK-xxx.jar 和 adquality-SDK-xxx.jar,仍然可以使用相同的配置。
- 将新的 mediation-SDK-xxx.aar 重命名为 mediation-SDK-xxx.zip。
- 将新的 adquality-SDK-xxx.jar 重命名为 adquality-SDK-xxx.zip。
- 提取 classes.jar
- 将其重命名为 mediation-SDK-xxx.jar 和 adquality-SDK-xxx.jar。
- 更新 AndroidManifest.xml
更新 AndroidManifest.xml 以进行手动 JAR 集成
要更新 AndroidManifest.xml,请完成以下步骤:
- 清单权限
将以下权限添加到 AndroidManifest.xml 文件清单标签内但标签外**:**
<application>
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-
清单活动和提供程序 在 AndroidManifest 中的标签中添加此部分:
<application><activity android:name="com.ironsource.sdk.controller.ControllerActivity" android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:theme="@android:style/Theme.NoTitleBar" /> <activity android:name="com.ironsource.sdk.controller.InterstitialActivity" android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.ironsource.sdk.controller.OpenUrlActivity" android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.ironsource.mediationsdk.testSuite.TestSuiteActivity" android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:theme="@android:style/Theme.NoTitleBar" /> <提供者 android:name="com.ironsource.lifecycle.IronsourceLifecycleProvider" android:authorities="${applicationId}.IronsourceLifecycleProvider" />
demo 应用程序
Integration Demo 应用程序演示了如何在 app 中集成 LevelPlay Mediation。
步骤 2.Google 标识符权限
-
将 播放 服务 依赖项添加到依赖项代代码块中,以便检索 GAID app ID 信息。dependencies { 实现 fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.google.android.gms:play-services-appset:16.0.0' implementation 'com.google.android.gms:play-services-ads-identifier:18.1.0' implementation 'com.google.android.gms:play-services-basement:18.1.0' }在此处了解有关 Google app set ID 的更多信息。
-
将目标 API 级别更新为 33(Android 13)的应用程序需要在清单文件中声明 Google 播放服务的正常权限,如下所示:<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>在此处阅读有关 Google 广告 ID 更改的更多信息。
步骤 3.初始化 SDK
要初始化 LevelPlay SDK,请执行以下步骤:
- 实现初始化成功和失败的回调。
- 使用 appKey 和用户 ID(如果相关)调用 LevelPlay init API。
LevelPlayInitRequest initRequest = new LevelPlayInitRequest.Builder(appKey) .withUserId("UserID") .build();LevelPlayInitListener initListener = new LevelPlayInitListener() { } @Override public void onInitFailed(@NonNull LevelPlayInitError error) { //Recommended to initialize again } @Override public void onInitSuccess(LevelPlayConfiguration configuration) { //Create ad objects and load ads }};LevelPlay.init(context, initRequest, initListener);
LevelPlay 初始化监听器
OnInitSuccess – 初始化成功完成时触发。收到此指示后,您可以创建和加载广告。
OnInitFailed – 未成功检索配置,无法加载广告服务。建议稍后尝试并初始化 LevelPlay SDK(当互联网连接可用或故障原因得到解决时)。
仅适用于 ProGuard 用户
如果将 ProGuard 与 LevelPlay SDK 结合使用,必须将以下代码添加到 ProGuard 文件(Android Studio:proguard-rules.pro 或 Eclipse:proguard-项目.txt):
-keepclassmembers 类 * 实现 Android.os.Parcelable { public static final android.os.Parcelable$Creator *;}#noinspection ShrinkerUnresolvedReference#unity-keep class com.google.android.gms.ads.identifier.** { public *; }-keep class com.google.android.gms.appset.** { *; }-keep class com.google.android.gms.tasks.** { *; }#adapters- keep 类 com. ironsource.adapters。** { *; }#sdk-dontwarn com. ironsource。**-dontwarn com. ironsource.adapters。**-keepclassmembers 类 com. ironsource。** { public *; }- 保留 public 类 com. ironsource。**- keep 类 com. ironsource.adapters。** { *;}#omid-dontwarn com.iab.omid。**-keep 类 com.iab.omid** {*;}#javascript-keepattributes JavascriptInterface-keepclassmembers 类 * { @android.webkit.JavascriptInterface <methods>; }#For AmazonAps integration-keep class com.amazon.device.ads.DtbThreadService { static * ;}- 保留公共接口 com.amazon.device.广告服务** {*; }#For AppLovin integration-keepclassmembers class com.applovin.sdk.AppLovinSdk { static * ;}-keep public interface com.applovin.sdk** {*; }-keep public interface com.applovin.adview** {*; }- Keep public interface com.applovin.mediation** {*; }- keep public interface com.applovin.communicator** {*; }#For Bytedance integration- keep public interface com.bytedance.SDK.openadsdk** {*; }#For Facebook integration-keepclassmembers class com.facebook.ads.internal.AdSdkVersion { static * ;}-keepclassmembers class com.facebook.ads.internal.settings.AdSdkVersion { static * ; }-keepclassmembers class com.facebook.ads.BuildConfig { static * ; }- 保留公共接口 com.facebook.广告服务** {*; }#For Fairbid-keep public interface com.fyber.fairbid.ads.interstitial** {*; }- 保持公共接口 com.fyber.fairbid.广告服务。rewarded** {*; }- 保留 com.fyber.offerwall 类。*#For Fivead- keep public interface com.five_corp.ad** {*; }#For Fyber(Inneractive) integration-keep public interface com.fyber.inneractive.sdk.external** {*; }-keep public interface com.fyber.inneractive.sdk.activities** {*; }-keep public interface com.fyber.inneractive.sdk.ui** {*; }#For HyprMX integration-keepclassmembers class com.hyprmx.android.sdk.utility.HyprMXProperties { static * ;}-keepclassmembers 类 com.hyprmx.android.BuildConfig { static * ;}-keep public interface com.hyprmx.android.sdk.activity** {*; }-keep public interface com.hyprmx.android.sdk.graphics** {*; }# For Inmobi integration##for-inmobi-integration-keep class com.inmobi.*- 保留公共接口 com.inmobi.广告服务。listeners** {*; }- 保留公共接口 com.inmobi.广告服务。InMobiInterstitial** {*; }- 保留公共接口 com.inmobi.广告服务。InMobiBanner** {*; }# For ironSource integration##for-ironsource-integration-keep public interface com.ironsource.mediationsdk.sdk** {*; }-keep public interface com.ironsource.mediationsdk.impressionData.ImpressionDataListener {*; }# For Mintergral integration##for-mintergral-integration-keep public interface com.mbridge.msdk.out** {*; }-keep public interface com.mbridge.msdk.videocommon.listener** {*; }-keep public interface com.mbridge.msdk.interstitialvideo.out** {*; }-keep public interface com.mintegral.msdk.out** {*; }-keep public interface com.mintegral.msdk.videocommon.listener** {*; }-keep public interface com.mintegral.msdk.interstitialvideo.out** {*; }#For MyTarget integration-keep class com.my.target.** {*;}#For Ogury integration- Keep public interface io.presage.interstitial** {*; }- Keep public interface io.presage.interstitial.PresageInterstitialCallback {*; }#For Pubnative integration-keep public interface net.pubnative.lite.sdk.interstitial.HyBidInterstitialAd** {*; }-keep public interface net.pubnative.lite.sdk.rewarded.HyBidRewardedAd** {*; }- keep public interface net.pubnative.lite.SDK.view.HyBidAdView** {*; }#For Smaato integration-keep public interface com.smaato.sdk.interstitial** {*; }-keep public interface com.smaato.sdk.video.vast** {*; }-keep public interface com.smaato.sdk.banner.widget** {*; }-keep public interface com.smaato.sdk.core.util** {*; }# For Tapjoy integration##for-tapjoy-integration- 保留公共接口 com.Tapjoy。** {*; }# For Tencent integration##for-tencent-integration-keep public interface com.qq.e.ads.interstitial2** {*; }-keep public interface com.qq.e.ads.interstitial3** {*; }- 保留公共接口 com.qq.e.广告服务。rewardvideo** {*; }-keep public interface com.qq.e.ads.rewardvideo2** {*; }-keep public interface com.qq.e.ads.banner2** {*; }-keep public interface com.qq.e.comm.adevent** {*; }#For Verizon integration-keepclassmembers 类 com.verizon.广告服务.edition.BuildConfig { static * ;}- 保留公共接口 com.verizon.广告服务。interstitialplacement** {*; }- 保留公共接口 com.verizon.广告服务。inlineplacement** {*; }-keep public interface com.verizon.ads.vastcontroller** {*; }- 保留公共接口 com.verizon.广告服务。webcontroller** {*; }#For Vungle integration- Keep public interface com.vungle.warren.PlayAdCallback {*; }-keep public interface com.vungle.warren.ui.contract** {*; }- Keep public interface com.vungle.warren.ui.view** {*; }#For AndroidX-keep class androidx.localbroadcastmanager.content.LocalBroadcastManager { *;}-keep 类 AndroidX.recyclerview.widget.RecyclerView { *;}-keep class androidx.recyclerview.widget.RecyclerView$OnScrollListener { *;}#For Android-keep 类 * 扩展 Android.app.Activity
步骤 4.验证您的集成
LevelPlay SDK 提供了一种简单的方法来验证是否已使用 LevelPlay 集成测试套件成功完成集成。测试app的集成度,验证平台设置,并审查与配置的网络相关的广告服务。
要在 app 中启用测试套件,请在设置 init 之前调用 setMetaData API:
LevelPlay.setMetaData("is_test_suite", "enable");
聚合初始化成功完成后,通过调用以下方法启动测试套件(需要应用程序上下文):
LevelPlay.launchTestSuite(context);
有关 LevelPlay 集成测试套件的更多详细信息和实现示例,请导航到本文章。