Android SDK下载与集成

开始之前

我们支持Android系统版本Version 4.1 (API Level 16) 及以上。请确保满足以下要求:

  • 使用Android Studio 2.0 版本及以上

  • Target Android API level 28

  • MinSdkVersion level 16 及以上

重要信息:在AdTiming Android SDK版本5.5及6.0以上的版本中,针对第三方平台的adapter模块被单独打包成独立的aar文件,每个平台都有一个对应的adapter包。如果您使用了AdTiming SDK的聚合功能,务必不要忘记把adapter下载并集成到项目中。请参考我们的手册中相关的内容添加聚合网络和聚合网络向导。

1. 概述

本手册介绍如何将AdTiming SDK集成到您的Android应用中。

AdTiming致力于提供多样且富有竞争力的广告变现解决方案,支持插屏、激励视频、原生、横幅和互动等丰富的广告类型。AdTiming聚合平台支持AdMob、Facebook、UnityAds、Vungle、Tapjoy、AppLovin、AdColony、Chartboost、Pangle、Mintegral、MoPub 和 IronSource等国内外主流的广告网络对接,帮助开发者实现“一次接入,全部覆盖”。

全新重构6.0版本引领SDK智能化时代!

全新设计的AdTiming Mediation SDK V6.0携带多项创新的智能化广告技术和全面优化的API接口设计,在广告加载、缓存、展示以及Waterfall、初始化等多个方面进行了全方位的重构和智能化升级,确保应用内广告的高填充率和高收益。AdTiming始终致力于为移动应用开发者提供最佳的广告聚合解决方案。  
在这个重新架构的SDK版本中,激励视频、互动和插屏类型广告的广告加载与库存管理是自动进行,开发者不再需要手动调用load方法,SDK智能库存引擎会主动进行广告的预加载和缓存,维护广告库存的高可用。同时,新的SDK API接口更加易于使用,在应用的任何广告场景中检查库存状态并直接进行广告展示即可;开发者可以更加关注于应用逻辑本身,而无需对广告的加载、缓存花费额外的精力。
 

2. Ads ID

在进行SDK集成之前,您得先有一个AdTiming Publisher前台的开发者账号,然后注册您的应用、创建广告位等操作,得到集成所必要的信息:APP_KEY和Placement ID。开发者前台请访问AdTiming Developer Platform

APP_KEY: APP_KEY 是给开发者应用分配的唯一标识,您可以在开发者前台创建应用后即可获取APP_KEY

  • Navigate to Apps -> Select 'Apps' -> Click on 'View All Apps'
    sdk_android_1_cn.png
  • Click on 'Copy'                     sdk_android_2_cn.png

Placement ID: 是广告位的唯一标识。开发者可以创建多个广告位,进入菜单APPS ->Placements可以查看到所有的广告位信息。 AdTiming广告位类型支持横幅、插屏、原生、激励视频和互动广告五种类型。

sdk_android_3_cn.png

 

3. 添加SDK到开发项目中

AdTiming SDK的集成支持Maven(Gradle依赖)自动下载和手动下载两种方式。Maven自动下载更加方便,这是我们推荐的方式,您只需在Gradle文件中添加几行代码即可完成自动集成。

Maven(使用Gradle依赖)

  • 将下面的脚本添加到您的project-level build.gradle文件中repositories 分段内。
...
allprojects { 
repositories {
...        
jcenter()
 maven {
           url 'https://dl.adtiming.com/android-sdk'
       }
  }
}
  • 将下面的脚本添加到您的application-level build.gradle 文件中dependencies 分段内。
dependencies {
    implementation  '6.6.0@aar'
}

 

手动下载

1.  下载Android SDK Version 6.6.0安装包

2. 将SDK手动添加到开发项目中

解压上述下载的SDK zip文件,将其中的AdTimingSDK-x.x.x.aar 文件添加到您Android项目的libs 目录下。

同时,务必在您的Gradle build 文件dependencies分段中添加以下脚本内容:

implementation (name:'AdTimingSDK-x.x.x', ext:'aar')

 

AdTiming演示应用程序

AdTiming演示应用程序介绍了如何将AdTiming中介集成到您的应用程序中。

下载Android演示应用程序

 

4. 更新 AndroidManifest.xml配置

接下来需要添加配置到您的AndroidManifest.xml 文件中,将以下所示的permission脚本添加到<manifest> 中,确保不要放在 <application> 内。

<!-- Required permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 

5. Proguard

如果您在应用中使用了Proguard来保护代码,请务必添加下面的配置到您的 Proguard 配置文件 (Android Studio: proguard-rules.pro or Eclipse: proguard-project.txt),否则SDK将会报错。

-dontwarn com.adtiming.mediationsdk.**.*
-dontwarn com.mopub.**.*
-dontwarn com.aiming.mdt.**.*
-dontskipnonpubliclibraryclasses
#AdTiming
-keep class com.adtiming.mediationsdk.mediation.**{*;}
-keep class com.mopub.**{*;}
-keep class com.aiming.mdt.**{*;}
-keep class com.adtiming.mediationsdk.mobileads.**{*;}
#R
-keepclassmembers class **.R$* {
  public static <fields>;
}
-keepattributes *Annotation*
-keepattributes InnerClasses -keepnames class * implements android.os.Parcelable { public static final ** CREATOR; }

 

6. MultiDex

如果您的应用中使用了multiDex,需要添加下面脚本到build.gradle文件。

android {
  buildTypes {
    release {
      multiDexKeepProguard file('multidex-config.pro')
      ...
    }
  }
}

相应的 multidex-config.pro 文件的内容如下所示:

#adt
-keep class com.adtiming.mediationsdk.mediation.**{*;}
-keep class com.mopub.**{*;}
-keep class com.aiming.mdt.**{*;}
-keep class com.adtiming.mediationsdk.mobileads.**{*;}

 

7. 重载Activity生命周期方法

在开始初始化SDK之前,您需要重写应用的生命周期方法。重载每个Activity对象的onPause()onResume()方法,调用对应的AdTimingAds.onPause()onResume()方法,如下所示。

protected void onResume() {
     super.onResume();
     AdTimingAds.onResume(this);
  } 
protected void onPause() {
     super.onPause();
     AdTimingAds.onPause(this);
  }

 

8. 初始化SDK

完成SDK的下载与集成后,就可以开始对SDK进行初始化了。初始化是在调用SDK进行广告加载展示之前必须做的工作,否则SDK不会进行任何有效的工作。我们建议在应用启动的时候进行SDK初始化,比如在Activity的onCreat()事件方法是一个不错的选择,如下所示:

import com.adtiming.mediationsdk.AdTimingAds;
public class DemoActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      String appKey = "Your AppKey";
      AdTimingAds.init(this, appKey, new InitCallback() {

          // Invoked when the initialization is successful.
          @Override
          public void onSuccess() {
          }

          // Invoked when the initialization is failed.
          @Override
          public void onError(AdTimingError error) {
          }
      });
    }
}

注意事项:

  • APP KEY需要在AdTiming前台创建应用时获取的。
  • Activity是必需参数,AdTiming以及其他第三方都需要一个有效的activity对象来进行初始化和广告加载展示,务必不要使用一个临时的activity对象,如应用的开屏界面,否则会导致不可知的异常。
  • 我们建议在onSuccess回调事件中进行第一次广告加载调用loadAd方法。
  • v6.0版本SDK的智能库存机制会自动加载和维护激励视频与插屏视频的广告库存,因此不需要手动调用load方法来加载这两种广告。
  • onError回调方法的error参数包含初始化失败的原因,如遇到异常请参考 错误与诊断 获取更多信息。

最佳实践:按广告类型初始化

v6.0及以上版本的SDK提供了新的初始化方案,您可以指定一个或多个广告类型进行初始化。我们建议您使用这种新的方法进行初始化,因为按广告类型的初始化方法仅仅会获取对应类型的广告进行预加载。基于这种方法,开发者可以将不同类型广告的初始化和预加载放在应用的不同时间节点上,基于应用的广告场景设计。这种方案的好处是,可以将原先集中在应用启动的时间点进行的广告预加载动作,分散到不同时间点,避免可能的网络拥挤导致广告加载速度缓慢、以致影响应用体验。

下面代码示例了如何通过新的初始化方法仅仅初始化和预加载激励视频与插屏广告两种类型。

/**
*Ad Units should be in the type of AdTimingAds.AD_TYPE.AdUnitName, for example:
*/
AdTimingAds.init(this, appkey, mcallback, AdTimingAds.AD_TYPE.INTERSTITIAL, AdTimingAds.AD_TYPE.REWARDED_VIDEO);

当使用新的初始化方法,可以在应用的不同时间点分别初始化每一种广告类型,如下所示:

// Init Rewarded video
AdTimingAds.init(this, appkey, mcallback, AdTimingAds.AD_TYPE.REWARDED_VIDEO); 
// Init Interstitial
AdTimingAds.init(this, appkey, mcallback, AdTimingAds.AD_TYPE.INTERSTITIAL); 
// Init Interactive AdTimingAds.init(this, appkey, mcallback, AdTimingAds.AD_TYPE.INTERACTIVE); 

实现回调事件处理

AdTiming SDK在初始化操作中会出发一系列的事件来通知应用程序,您需要实现InitCallback接口的onSuccess()onError() 回调方法以处理初始化成功和失败的事件。

@Override
public void onSuccess() {
    // Add code here to process init success event.
}
@Override
public void onError(AdTimingError error) {
    // Add code here to process init failed event.
    // Parameter message tells the error information.
}

传递归因信息(可选)

如果您项目同时集成了AppsFlyer SDK,我们需要您将应用归因数据传递到AdTiming,以便我们帮您准确计算各Media Source、Campaign层级ROAS及LTV数据。

1. 在AppsFlyer onConversionDataSuccess 回调中调用 sendAFConversionData 

AppsFlyer 5.0.0以上版本

@Override
public void onConversionDataSuccess(Map<String, Object> conversionData) {
AdTimingAds.sendAFConversionData(conversionData); }

AppsFlyer 4.x 或更低版本

@Override
public void onInstallConversionDataLoaded(Map<String, String> map) { {
AdTimingAds.sendAFConversionData(map); }

2. 在AppsFlyer onAppOpenAttribution 回调中调用 sendAFDeepLinkData

@Override
public void onAppOpenAttribution(Map<String, String> conversionData) {
AdTimingAds.sendAFDeepLinkData(conversionData); }

    

恭喜您完成了AdTiming SDK的集成。接下来需要做的工作:

1、在您的应用中集成激励视频插屏横幅原生广告。
2、按照我们的指导手册集成广告网络中介网络指南来进行广告网络聚合。

提醒:在Android SDK v5.5以上版本中进行聚合操作,您不仅需要下载第三方广告平台的SDK,还需要集成相应平台SDK的adapter,现在这些adapter是一个独立的aar文件,需要单独下载和集成。

这篇文章有帮助吗?
10 人中有 7 人觉得有帮助

评论

0 条评论

文章评论已关闭。