Android聚合说明
OpenMediation聚合平台支持从多个广告网络展示广告,通过将广告请求发给多个平台,遴选最佳广告进行展示,这有助于最大化提升您的广告收益。OpenMediation平台支持从十多个平台聚合横幅、原生、插屏、激励视频等类型进行广告加载与展示,通过智能加载、多实例机制和hybrid waterfall等技术实现收益最大化。
开始之前
在开始使用OpenMediation聚合功能之前,您需要先正确的集成OpenMediation 聚合SDK并完成了相应的广告类型的加载与展示:
重要提示:Android SDK v2.0.0及以上的版本中, 用于集成第三方广告平台的adapter模块采用独立的aar文件方式打包,除了广告平台的SDK,您还需要单独下载和集成adapter的aar文件到您的项目中.
举例来说,如果您要集成AdMob的广告,那么您需要同时将AdMob的SDK和对应的adapter添加到project的libs中。
集成广告网络
OpenMediation聚合平台支持十多个第三方广告网络,进行第三方平台的集成需要以下三个方面操作:
- 第三方广告平台操作:登录第三方网络操作界面,创建应用和对应的广告位。
- OpenMediation平台操作:更新对应广告位的聚合设置,增加该网络的实例。我们建议采用自动优化的方式。
- 应用程序代码 – 需要更新您的应用程序,加入第三方广告网络的SDK和对应的adapter。
请务必按照本文档的聚合说明指导下进行操作.
我们同时支持Maven自动方式和手动方式进行第三方平台的聚合和集成。
自动方式集成
按照以下所示的代码,您可以非常简单快速的完成自动集成操作,只需将对应广告平台的脚本拷贝到您的gradle 文件中。我们建议您采用自动的方式进行集成。
如果您习惯于使用手动下载方式,您可以参考下一节“手动下载集成”,那里可以找到所有需要的下载链接和信息。
OpenMediation SaaS平台提供全面的海外变现AdNetwork平台覆盖,您只需要两个步骤即可完成所需的平台SDK和OpenMediation SDK的集成。以下示例的集成代码包含了所有支持的海外平台,请根据所需集成的平台选取适当的代码片段。
第一步,将下面对应平台的集成脚本拷贝到您的 project-level build.gradle 文件的 repositories 中。
allprojects {
repositories {
mavenCentral()
google()
jcenter()
maven {
url "https://adcolony.bintray.com/AdColony"
}
maven {
url "https://tapjoy.bintray.com/maven"
}
maven {
url "https://dl.adtiming.com/android-sdk"
}
maven {
url "https://dl.bintray.com/ironsource-mobile/android-sdk"
}
maven {
url "https://chartboostmobile.bintray.com/Chartboost"
}
maven {
url "https://dl.bintray.com/mintegral-official/mintegral_ad_sdk_android_for_oversea"
}
}
}
第二步,将下面对应平台的集成脚本拷贝到您的 application-level build.gradle 文件的 dependencies 中。
dependencies {
implementation 'com.openmediation:om-android-sdk:2.1.0'
// for AdTiming
implementation 'com.openmediation.adapters:adtiming:2.0.1'
implementation 'com.adtiming:adnetwork:6.8.1@aar'
// for AdMob
implementation 'com.openmediation.adapters:admob:2.1.0'
implementation 'com.google.android.gms:play-services-ads:19.7.0'
// for Facebook
implementation 'com.openmediation.adapters:facebook:2.0.0'
implementation 'com.facebook.android:audience-network-sdk:6.2.1'
// for Vungle
implementation 'com.openmediation.adapters:vungle:2.1.0'
implementation 'com.vungle:publisher-sdk-android:6.9.1'
// for AdColony
implementation 'com.openmediation.adapters:adcolony:2.1.0'
implementation 'com.adcolony:sdk:4.4.1'
// for AppLovin
implementation 'com.openmediation.adapters:applovin:2.1.0'
implementation 'com.applovin:applovin-sdk:9.15.1'
// for MoPub
implementation 'com.openmediation.adapters:mopub:2.0.0'
implementation ('com.mopub:mopub-sdk:5.15.0@aar') { transitive = true }
// for Tapjoy
implementation 'com.openmediation.adapters:tapjoy:2.0.0'
implementation 'com.tapjoy:tapjoy-android-sdk:12.7.1@aar'
// for Chartboost
implementation 'com.openmediation.adapters:chartboost:2.0.0'
implementation 'com.chartboost:chartboost-sdk:8.2.0'
implementation 'com.google.android.gms:play-services-base:17.5.0'
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
// for UnityAds
implementation 'com.openmediation.adapters:unity:2.0.1'
implementation 'com.unity3d.ads:unity-ads:3.6.0'
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
// for Mingtegral
implementation 'com.openmediation.adapters:mintegral:2.1.0'
implementation 'com.mintegral.msdk.oversea:videojs:15.4.31'
implementation 'com.mintegral.msdk.oversea:mtgjscommon:15.4.31'
implementation 'com.mintegral.msdk.oversea:playercommon:15.4.31'
implementation 'com.mintegral.msdk.oversea:reward:15.4.31'
implementation 'com.mintegral.msdk.oversea:videocommon:15.4.31'
implementation 'com.mintegral.msdk.oversea:interstitialvideo:15.4.31'
implementation 'com.mintegral.msdk.oversea:common:15.4.31'
implementation 'com.mintegral.msdk.oversea:mtgbanner:15.4.31'
// for using bidding
implementation 'com.mintegral.msdk.oversea:mtgbid:15.4.31'
// for Pangle
implementation 'com.openmediation.adapters:tiktok:2.1.0'
implementation 'com.bytedance.sdk:pangle-sdk:3.4.1.1'
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
// for ironSource
implementation 'com.openmediation.adapters:ironsource:2.0.0'
implementation 'com.ironsource.sdk:mediationsdk:7.1.0.2'
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
implementation 'com.google.android.gms:play-services-basement:17.5.0'
// for Helium
implementation 'com.openmediation.adapters:helium:2.0.0'
implementation 'com.chartboost:helium:2.2.1'
implementation 'org.greenrobot:eventbus:3.2.0'
implementation 'com.google.android.gms:play-services-base:17.5.0'
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
}
手动下载集成
OpenMediation SDK同时提供了手动集成方式,下表中列举了支持的第三方平台、广告类型和SDK的版本以及SDK和adapter的下载方式与链接,您可以按需要进行下载和集成。
Platforms | Supported SDK Version | Banner | Interstitial | Native | Reward Video | Splash | SDK Download | Adapter Download |
---|---|---|---|---|---|---|---|---|
AdTiming | 6.8.1 | ✔️ | ✔️ | ✔️ | ✔️ | Maven Configuration | Download | |
AdMob | 19.7.0 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Maven Configuration | Download |
6.2.1 | ✔️ | ✔️ | ✔️ | ✔️ | Maven Configuration | Download | ||
MoPub | 5.15.0 | ✔️ | ✔️ | ✔️ | ✔️ | Maven Configuration | Download | |
UnityAds | 3.6.0 | ✔️ | ✔️ | ✔️ | Maven Configuration | Download | ||
AppLovin | 9.15.1 | ✔️ | ✔️ | ✔️ | Maven Configuration | Download | ||
AdColony | 4.4.1 | ✔️ | ✔️ | Maven Configuration | Download | |||
Vungle | 6.9.1 | ✔️ | ✔️ | ✔️ | Maven Configuration | Download | ||
Tapjoy | 12.7.1 | ✔️ | ✔️ | Maven Configuration | Download | |||
Chartboost | 8.2.0 | ✔️ | ✔️ | Maven Configuration | Download | |||
Mintegral | 15.4.31 | ✔️ | ✔️ | ✔️ | Maven Configuration | Download | ||
Pangle | 3.4.1.1 | ✔️ | ✔️ | Maven Configuration | Download | |||
ironSource | 7.1.0.2 | ✔️ | ✔️ | ✔️ | Maven Configuration | Download | ||
Helium | 2.2.1 | ✔️ | ✔️ | Maven Configuration | Download |
针对聚合平台的额外配置
1. AdMob
- 更新Android Manifest.xml
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="admob_app_id" />
- 仅针对使用Proguard
如果您将 ProGuard 与 AdMob 适配器一起使用,则必须将以下代码添加到 ProGuard 配置中 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
-keep public class com.google.android.gms.** {
public *;
}
-keep public class com.google.ads.** {
public *;
}
2. Facebook
仅针对使用 Proguard
如果您将 ProGuard 与 Facebook适配器一起使用,则必须将以下代码添加到 ProGuard 配置中 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
-keep class com.facebook.ads.** { *; }
3. UnityAds
仅针对使用 Proguard
如果您将 ProGuard 与 UnityAds适配器一起使用,则必须将以下代码添加到 ProGuard 配置中 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
-keepattributes SourceFile,LineNumberTable
-keepattributes JavascriptInterface
-keep class android.webkit.JavascriptInterface {
*;
}
-keep class com.unity3d.** {
*;
}
4. AppLovin
-
仅针对使用 Proguard
如果您将 ProGuard 与AppLovin适配器一起使用,则必须将以下代码添加到 ProGuard 配置中 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
-keep class com.applovin.** { *; }
- 设置激励视频
将 AppLovin 适配器添加到您的内部版本后,您需要在AppLovin 后台启用激励视频功能.
- 在'Manage Apps' 选择指定的应用
- 向下滚动到'Rewarded Video'部分设置下列选项
- Frequency Capping – 不要对激励视频限制频次
- Virtual Currency Details – 不需要设置,OpenMediation 适配器会自动设置
- Callback Options – Client-side callbacks only
- 点击保存 'Save'
5. Vungle
1. 更新xml文件
修改Android Manifest.xml 添加permissions.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Optional permissions to enable better geo-targeting of ads (recommended) -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
2. 仅针对使用Proguard
如果您将 ProGuard 与 Vungle适配器一起使用,则必须将以下代码添加到 ProGuard 配置中 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
# Vungle
-keep class com.vungle.warren.** { *; }
-dontwarn com.vungle.warren.error.VungleError$ErrorCode
# Moat SDK
-keep class com.moat.** { *; }
-dontwarn com.moat.**
# Okio
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
# Retrofit
-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8
# Gson
-keepattributes Signature
-keepattributes *Annotation*
-dontwarn sun.misc.**
-keep class com.google.gson.examples.android.model.** { *; }
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Google Android Advertising ID
-keep class com.google.android.gms.internal.** { *; }
-dontwarn com.google.android.gms.ads.identifier.*
6. Tapjoy
1. 更新xml文件
- 修改Android Manifest.xml 添加以下permissions.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- 修改Android Manifest.xml 添加以下 activities.
<activity
android:name="com.tapjoy.TJAdUnitActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity
android:name="com.tapjoy.TJContentActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
2. 仅针对使用Proguard
如果您将 ProGuard 与 Tapjoy适配器一起使用,则必须将以下代码添加到 ProGuard 配置中 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
-keep class com.tapjoy.** { *; }
-keep class com.moat.** { *; }
-keepattributes JavascriptInterface
-keepattributes *Annotation*
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.tapjoy.**
7. AdColony
1. 更新xml文件
- 修改Android Manifest.xml添加以下 permissions.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Optional permissions -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
- 修改Android Manifest.xml 添加以下activity.
<activity
android:name="com.adcolony.sdk.AdColonyInterstitialActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:hardwareAccelerated="true" />
2. 仅针对使用Proguard
如果您将 ProGuard 与 AdColony适配器一起使用,则必须将以下代码添加到 ProGuard 配置中 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
-keepclassmembers class com.adcolony.sdk.ADCNative** {
*;
}
-dontwarn android.app.Activit
8. Chartboost
1. 更新AndroidManifest.xml文件
修改Android Manifest.xml 添加以下activity.
<activity
android:name="com.chartboost.sdk.CBImpressionActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:excludeFromRecents="true"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
2. 仅针对使用Proguard
如果您将 ProGuard 与 Chartboost适配器一起使用,则必须将以下代码添加到 ProGuard 配置中 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
-dontwarn com.chartboost.**.*
-keep class com.chartboost.** { *; }
-dontwarn org.greenrobot.eventbus.**.*
-keep class org.greenrobot.eventbus.** { *; }
9. MoPub
1. 更新 AndroidManifest.xml文件
- 修改Android Manifest.xml 添加以下 permissions.
<!-- Required permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Optional permissions. Will pass Lat/Lon values when available. Choose either Coarse or Fine -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
2. 仅针对使用Proguard
如果您将 ProGuard 与 Mopub适配器一起使用,则必须将以下代码添加到 ProGuard 配置中(Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):
# Keep public classes and methods.
-keepclassmembers class com.mopub.** { public *; }
-keep public class com.mopub.**
-keep public class android.webkit.JavascriptInterface {}
# Explicitly keep any BaseAd and CustomEventNative classes in any package.
-keep class * extends com.mopub.mobileads.BaseAd {}
-keep class * extends com.mopub.nativeads.CustomEventNative {}
# Keep methods that are accessed via reflection
-keepclassmembers class ** { @com.mopub.common.util.ReflectionTarget *; }
# Support for Android Advertiser ID.
-keep class com.google.android.gms.common.GooglePlayServicesUtil {*;}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {*;}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {*;}
# Support for Google Play Services
# http://developer.android.com/google/play-services/setup.html
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
10. Mintegral
1. 仅针对使用Proguard配置
如果您将 ProGuard 与 Mintegral适配器一起使用,则必须将以下代码添加到 ProGuard 配置中
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.mintegral.** {*; }
-keep interface com.mintegral.** {*; }
-keep interface androidx.** { *; }
-keep class androidx.** { *; }
-keep public class * extends androidx.** { *; }
-dontwarn com.mintegral.**
-keep class **.R$* { public static final int mintegral*; }
2. Apache兼容性设置
由于Mintegral SDK使用了Apache的httpclient,考虑到兼容性问题,请添加以下内容到项目中。
(1) 添加以下代码到AndroidManifest.xml文件:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
(2)添加以下代码到应用级的 gradle文件:
android {
...
...
useLibrary 'org.apache.http.legacy'
...
...
}
11. Pangle
1. 更新 AndroidManifest.xml文件
<!--The permissions that prefer to have-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
2. 仅针对使用Proguard配置
如果您将 ProGuard 与 Pangle 适配器一起使用,则必须将以下代码添加到 ProGuard 配置中
-keep class com.bytedance.sdk.openadsdk.** { *; }
12. ironSource
1. 更新 AndroidManifest.xml文件
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2. 仅针对使用Proguard配置
如果您将 ProGuard 与 ironSource 适配器一起使用,则必须将以下代码添加到 ProGuard 配置中
-keepclassmembers class com.ironsource.sdk.controller.IronSourceWebView$JSInterface {
public *;
}
-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keep public class com.google.android.gms.ads.** {
public *;
}
-keep class com.ironsource.adapters.** { *;
}
-dontwarn com.ironsource.mediationsdk.**
-dontwarn com.ironsource.adapters.**
-keepattributes JavascriptInterface
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
评论
文章评论已关闭。