集成广告网络

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聚合平台支持十多个第三方广告网络,进行第三方平台的集成需要以下三个方面操作:

  1. 第三方广告平台操作:登录第三方网络操作界面,创建应用和对应的广告位。
  2. OpenMediation平台操作:更新对应广告位的聚合设置,增加该网络的实例。我们建议采用自动优化的方式。
  3. 应用程序代码 – 需要更新您的应用程序,加入第三方广告网络的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
Facebook 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

  1. 更新Android Manifest.xml
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="admob_app_id" />
  1. 仅针对使用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

  1. 仅针对使用 Proguard

如果您将 ProGuard 与AppLovin适配器一起使用,则必须将以下代码添加到 ProGuard 配置中 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt):

-keep class com.applovin.** { *; }
  1. 设置激励视频

将 AppLovin 适配器添加到您的内部版本后,您需要在AppLovin 后台启用激励视频功能.

  1. 'Manage Apps' 选择指定的应用
  2. 向下滚动到'Rewarded Video'部分设置下列选项
  • Frequency Capping – 不要对激励视频限制频次
  • Virtual Currency Details – 不需要设置,OpenMediation 适配器会自动设置
  • Callback Options – Client-side callbacks only
  1. 点击保存 '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>;
}
 
 
这篇文章有帮助吗?
0 人中有 0 人觉得有帮助

评论

0 条评论

文章评论已关闭。