AdVista SDKAdVista SDK
  • 指南

    • Advista 广告SDK隐私政策
    • Advista 广告SDK合规使用说明
    • Advista 广告SDK应用权限申请与使用情况说明
    • Advista 流量变现平台用户服务协议
    • Android 集成手册
      • Android SDK版本更新记录
      • Android SDK工程配置和初始化
      • 开屏广告
      • 插屏广告
      • 原生广告
      • 激励视频广告
        • 激励视频服务端验证
      • 开发者自渲染原生广告
      • 三方聚合平台接入指引
        • Taku 自定义接入 Advista SDK 说明文档
        • Gromore自定义接入Advista SDK说明文档
        • ToBid自定义接入Advista SDK说明文档
      • SDK错误信息表
      • sdk资源下载
    • iOS 集成手册
    • Report API 文档

Android 集成手册

Android SDK版本更新记录

版本号更新日期更新内容
1.7.22025-02-04修复已知问题
1.7.12025-01-16修复已知问题
1.7.02025-12-22修复已知问题,优化日志
1.6.32025-12-10修复已知问题
1.6.22025-12-04修复已知问题
1.6.12025-11-25修复已知问题
1.5.102025-10-21修复已知问题
1.5.92025-10-15修复已知问题
1.5.12025-09-15修复已知问题
1.5.02025-09-08新增开启关闭摇一摇功能,修复已知问题
1.4.02025-08-14修复已知问题
1.3.02025-07-28新增激励视频广告
1.2.12025-07-16修复已知问题
1.2.02025-06-25新增原生自渲染广告,优化用户体验,修复已知问题
1.0.72025-06-12修复已知问题
1.0.62025-05-27修复已知问题
1.0.32025-05-20修复已知问题,适配Taku平台
1.0.22025-05-13修复已知问题
1.0.12025-04-29修复已知问题,增加广告onAdSkipped的回调
1.0.02025-04-08初始版本发布,提供插屏、开屏、原生广告接入方式

Android SDK工程配置和初始化

Android SDK环境配置

sdk的minSdkVersion=21,targetSdkVersion=30

Android SDK集成

将SDK资源包中libs目录下的aar包复制到project项目的libs目录下

【重要合规说明】SDK 初始化时机

为严格遵守《个人信息保护法》及监管部门合规要求,严禁在用户点击“同意”隐私协议之前调用 AdvistaSDK.init()。

正确接入流程:

APP 启动,弹出隐私协议弹窗。

用户点击“拒绝” -> APP 退出或仅运行基础功能(不调用 SDK)。

用户点击“同意” -> 此时再调用 AdvistaSDK.init(context)。

注意: 若在 init 之前调用 SDK 其他接口,SDK 将无法工作并输出错误日志。因提前初始化导致的合规风险由开发者自行承担。

添加依赖

在根目录的build.gradle中添加:

buildscript {
    repositories {
        google()
        jcenter()
        //以下两个maven用于在您未自定义OAID时获取OAID,如果您已经依赖移动安全联盟(MSA)的aar
        //请检查该aar包中是否已经存在huawei或hihonor的路径,如存在,则不需要再次引用
        maven { url 'https://developer.huawei.com/repo' }
        maven { url 'https://developer.hihonor.com/repo' }
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        //以下两个maven用于在您未自定义OAID时获取OAID,如果您已经依赖移动安全联盟(MSA)的aar
        //请检查该aar包中是否已经存在huawei或hihonor的路径,如存在,则不需要再次引用
        maven { url 'https://developer.huawei.com/repo' }
        maven { url 'https://developer.hihonor.com/repo' }
    }
}

在app工程下的build.gradle文件中添加依赖,代码如下:

 implementation(files("libs/advista-1.7.2-release.aar")) 
 //以下两个依赖用于在您未自定义OAID时获取OAID,如果您已经依赖移动安全联盟(MSA)的aar
 //请检查该aar包中是否已经存在huawei或hihonor的路径,如存在,则不需要再次引用
 implementation 'com.huawei.hms:ads-identifier:3.4.62.300'
 implementation 'com.hihonor.mcs:ads-identifier:1.0.2.301'

在AndroidManifest.xml中添加如下信息

<!-- 联网权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 定位权限,不强制要求 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 检测当前网络状态是2G、3G、4G还是WiFi -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 获取MAC地址,用于标识用户 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取设备标识IMEI。用于标识用户 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 读写存储权限 非必须 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 安装应用权限 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 建议添加“query_all_package”权限,SDK将通过此权限在AndroidR系统上判定广告对应的应用是否在用户的app上安装,
  避免投放错误的广告,以此提高用户的广告体验。若添加此权限,需要在您的用户隐私文档中声明 -->
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

配置初始化

在application的onCreate()方法中调用:

AdConfig adConfig = new AdConfig() {

     /**
      *是否开启个性化接口,开启后默认允许sdk获取设备信息,优先级低于下面单个设置开关
      * 关闭后sdk默认不获取设备信息,不读取下面开关状态
      */
     @Override
     public boolean isUsePersonalRecommend() {
        return super.isUsePersonalRecommend();
     }

    /**
     * debug模式 开启后,会打印sdk的日志信息
     */
    @Override
    public boolean isDebug() {
        return false;
    }

    /**
     *如果isCanGetGeo()接口传入false,需要用户手动传入 latitude,longitude 示例格式109.4,121.5
     */
    @Override
    public String getGeo() {
        return super.getGeo();
    }

    /**
     *如果isCanGetMac()接口传入false,需要用户手动传入
     */
    @Override
    public String getMac() {
        return super.getMac();
    }

    /**
     *如果isCanGetOaid()接口传入false,需要用户手动传入
     */
    @Override
    public String getOaid() {
        return super.getOaid();
    }

    /**
     *如果isCanGetImei()接口传入false,需要用户手动传入
     */
    @Override
    public String getImei() {
        return super.getImei();
    }

    /**
     *如果isCanGetAndroidId()接口传入false,需要用户手动传入
     */
    @Override
    public String getAndroidId() {
        return super.getAndroidId();
    }

    /**
     * sdk是否可以获取AndroidId
     */
    @Override
    public boolean isCanGetAndroidId() {
        return true;
    }

    /**
     * sdk是否可以获取oaid
     */
    @Override
    public boolean isCanGetOaid() {
        return true;
    }

    /**
     * sdk是否可以获取imei
     */
    @Override
    public boolean isCanGetImei() {
        return true;
    }

    /**
     * sdk是否可以获取wifi状态
     */
    @Override
    public boolean isCanGetWifiState() {
        return true;
    }

    /**
     * sdk是否可以获取应用列表
     */
    @Override
    public boolean isCanGetAppList() {
        return true;
    }

    /**
     * sdk是否可以获取Mac地址
     */
    @Override
    public boolean isCanGetMac() {
        return true;
    }

    /**
     * sdk是否可以获取地理位置信息
     */
    @Override
    public boolean isCanGetGeo() {
        return true;
    }
};

//在Application的onCreate中初始化
//appId传入当前应用对应的appId  初始化需要传入appliation对象(this)
AdvistaSdk.getInstance().init("appId", this, adConfig, new InitListener() {

    /**
     * 初始化成功
     */
  	@Override
    public void onInitSuccess() {

    }

  	/**
     * 初始化失败
     * @param i 错误码
     * @param s 失败原因
     */
    @Override
    public void onInitFailed(String s) {

    }
});

//若不传入Adconfig对象,则sdk默认获取设备信息
 AdvistaSdk.getInstance().init("appId", this, new InitListener() {

     /**
     * 初始化成功
     */
  	@Override
    public void onInitSuccess() {

    }

  	/**
     * 初始化失败
     * @param i 错误码
     * @param s 失败原因
     */
    @Override
    public void onInitFailed(String s) {

    }
});
个性化推荐广告设置

在上面的示例方法isUsePersonalRecommend修改返回值,默认返回true开启个性化推荐。开启后,sdk会读取示例中下面方法中的开关,来判断sdk是否需要读取设备信息。关闭个性化推荐时,sdk默认不读取设备信息,sdk不读取示例中下面的方法开关状态。

获取Android SDK版本号

AdvistaSdk.geVersion();

代码混淆

如果您需要使用 proguard 混淆代码,需确保不要混淆 SDK 的代码。请在 proguard-rules.pro 文件(或其他混淆文件)中添加如下配置:

-keep class com.jiaads.advista.sdk.AdvistaSdk {
    public static get*();
    public java.lang.String geVersion();
    public *** init(...);
    public *** load*(...);
    public *** saveCustomParams(...);
}
-keep class com.jiaads.advista.sdk.AdLoadParams {
    public *;
}
-keep class com.jiaads.advista.sdk.AdLoadParams$Builder {
    public *;
}
-keep class com.jiaads.advista.sdk.AdConfig {
    public *;
}
-keep class com.jiaads.advista.sdk.InitListener {
    public protected *;
}

-keep class com.jiaads.advista.mob.ad.listener.** {
    *;
}
-keep class com.jiaads.advista.mob.ad.TemplateAd {
     public com.jiaads.advista.mob.ad.AdControllerProxy getAdControllerProxy(...);
}
-keep class com.jiaads.advista.mob.ad.AdControllerProxy {
    public <methods>;
}
-keep class com.jiaads.advista.util.DeviceUtils {
    public static getDeviceInfoJson*(...);
    native <methods>;
}
-keep class com.jiaads.advista.mob.ad.self.NativeFeedsData {
    public *;
}
-keep public interface com.jiaads.advista.mob.ad.self.NativeAdEventListener {
    public protected *;
}
-keep public interface com.jiaads.advista.mob.ad.self.NativeAdListener {
    public protected *;
}
-keep public interface com.jiaads.advista.mob.ad.self.NativeVideoViewListener {
    public protected *;
}
-keep class com.jiaads.advista.mob.ad.self.NMPlayerView {
    public <methods>;
}
-keep class com.jiaads.advista.database.DatabaseHelper{
    native <methods>;
}
-keep class com.jiaads.advista.entity.AdsTemplate$** {
    *;
}

开屏广告

概述

开屏广告是应用程序启动时呈现的全屏广告,开发者只需遵循标准接入流程即可展示广告视图。开屏广告在应用启动时显示,持续5秒后自动关闭。用户也可以点击“跳过”快速进入主界面,或点击广告了解更多信息。

广告加载参数AdLoadParams.Builder方法说明

方法说明
Builder setSposId(String sposId)设置开屏代码位id
Builder setMute(boolean isMute)设置视频素材是否默认静音
Builder setShakeButton(boolean isShakeButton)设置是否摇一摇功能(不设置默认开启)
Builder setLoadTimeOut(int loadTimeOut)设置广告加载的超时时长
AdLoadParams build()返回AdLoadParams用于加载开屏广告

加载开屏广告AdLoadParams设置以上参数有效,其余参数sdk不做处理。

AdvistaSdk开屏相关方法说明

方法说明
void loadSplashAd(Activity activity, AdLoadParams params, AdListener listener)加载开屏广告,调用AdvistaSdk.getInstance().loadSplashAd()方法
boolean isReady()判断当前广告是否可用
void showAd()在当前Activity的根布局填充开屏广告,在AdListener.onAdLoaded(TemplateAd templateAd)回调中调用templateAd.getAdControllerProxy().showAd()
void showAd(ViewGroup viewGroup)在传入的viewGroup布局填充开屏广告,在AdListener.onAdLoaded(TemplateAd templateAd)回调中调用templateAd.getAdControllerProxy().showAd(mContainer)

AdListener回调方法说明:

方法说明
void onLoadError(int code, String msg)广告加载失败,code加载广告的错误码,msg 加载广告的错误信息
void onShowError(int code, String msg)广告渲染失败,code 渲染广告的错误码,msg 渲染广告的错误信息
void onAdLoaded(TemplateAd templateAd)广告加载成功,templateAd 广告素材加载成功获取到的对象,用于媒体调用
void onResourceReady()广告素材缓存成功,此时可调用templateAd的show方法直接展示
void onAdExposure()广告曝光成功的回调
void onAdExposureFailed(int code, String msg)广告曝光失败的回调
void onAdClicked()广告交互的回调,包含点击、摇一摇等
void onAdSkipped()广告点击跳过的回调
void onAdClosed()广告关闭的回调

加载广告

在上一步初始化sdk成功后,需要实现广告加载的回调接口:

AdListener adListener = new AdListener() {
    /**
     *
     * @param code 加载广告的错误码
     * @param msg 加载广告的错误信息
     */
    @Override
    public void onLoadError(int code, String msg) {

    }

    /**
     *
     * @param code 渲染广告的错误码
     * @param msg 渲染广告的错误信息
     */
    @Override
    public void onShowError(int code, String msg) {

    }

    /**
     *
     * @param templateAd 广告加载成功获取到的对象,用于媒体调用
     */
    @Override
    public void onAdLoaded(TemplateAd templateAd) {

    }
  
  
  	/**
     * 广告素材缓存成功的回调
     */
    @Override
    public void onResourceReady() {

    }
  	

    /**
     * 广告曝光成功的回调
     */
    @Override
    public void onAdExposure() {

    }

    /**
     * 广告曝光失败
     * @param code 曝光广告的错误码
     * @param msg 曝光广告的错误信息
     */
    @Override
    public void onAdExposureFailed(int code, @Nullable String msg) {

    }

    /**
     * 广告交互的回调,包含点击、摇一摇等
     */
    @Override
    public void onAdClicked() {

    }
  
   /**
     * 广告点击跳过的回调
     */
    @Override
    public void onAdSkipped() {

    }

    /**
     * 广告关闭的回调
     */
    @Override
    public void onAdClosed() {

    }
};

调用sdk中的方法加载开屏广告的信息:

AdLoadParams params = new AdLoadParams.Builder()
                .setSposId("开屏代码位id")
                .setMute(true)
                .setShakeButton(true)
                .setLoadTimeOut(5000)
                .build();
AdvistaSdk.getInstance().loadSplashAd(this, params,adListener);

中间参数 开屏代码位id是指开发者在平台上新建的开屏代码位id,必须与应用的appid相对应,否则会报错,报错会在onLoadError中给出相应的错误信息,具体错误码和错误信息对照请参考《sdk错误信息表》。

获取cpm价格

在上一步广告加载成功后,可以拿到TemplateAd对象,可以通过以下方式获取价格(单位,人民币分):

templateAd.getAdControllerProxy().getECPM();

获取requestId

在上一步广告加载成功后,可以拿到TemplateAd对象,可以通过以下方式获取当前广告的requestId:

templateAd.getAdControllerProxy().getRequestId();

渲染广告

在上一步广告加载成功后,可以拿到TemplateAd对象,可以在onResourceReady回调成功后,用于展示和关闭广告,展示的方式有以下两种:

templateAd.getAdControllerProxy().showAd();

该方法用loadSplashAd方法中的activity做容器全屏加载开屏广告,广告显示区域与Activity根布局区域一致。

templateAd.getAdControllerProxy().showAd(mContainer);

该方法由开发者指定区域渲染,mContainer对象填充开屏广告,屏幕其他区域由开发者自行填充。

调用show方法时如未能渲染成功,会在onShowError方法中给出相应的错误信息,具体错误码和错误信息对照请参考《sdk错误信息表》。

开屏广告请求示例:

String splashSposId = "123571";//开屏广告位id 需要与平台上当前应用创建的广告位id一致
 AdLoadParams params = new AdLoadParams.Builder()
                .setSposId(splashSposId)
                .setMute(true)
                .setShakeButton(true)
                .setLoadTimeOut(5000)
                .build();
AdvistaSdk.getInstance().loadSplashAd(this, params, new AdListener() {
    @Override
    public void onLoadError(int code, String msg) {
        //开屏广告加载报错 code 错误码 msg 错误信息
    }

    @Override
    public void onShowError(int code, String msg) {
        //调用show方法报错 code 错误码 msg 错误信息
    }

    @Override
    public void onAdLoaded(TemplateAd templateAd) {
        //广告加载成功
     		//在这里可以获取当前广告的价格 以及素材缓存的状态
        templateAd.getAdControllerProxy().getECPM();//获取广告价格
        templateAd.getAdControllerProxy().getRequestId();//获取广告请求id
      	templateAd.getAdControllerProxy().isReady();//素材是否缓存成功 效果同下方onResourceReady
    }
  
  	@Override
    public void onResourceReady() {
        //调用show方法展示广告(无论哪种show方法只可以调用一次)
        templateAd.getAdControllerProxy().showAd(); //在当前activity根布局展示开屏广告
        templateAd.getAdControllerProxy().showAd(mContainer); //在指定区域内展示开屏广告,剩余区域开发者自行渲染
    }

    @Override
    public void onAdExposure() {
        //广告曝光成功 在调用show方法成功后会进入到曝光流程
    }

    @Override
    public void onAdExposureFailed(int code, String msg) {
        //广告曝光失败 code 错误码 msg 错误信息
    }

    @Override
    public void onAdClicked() {
         //广告点击成功(包括摇一摇等交互)
    }
  
 
    @Override
    public void onAdSkipped() {
  			//广告点击跳过
    }

    @Override
    public void onAdClosed() {
        //广告关闭
    }
});

关闭广告:

templateAd.getAdControllerProxy().closeAd();

closeAd方法会关闭当前广告同时销毁,单个广告只可被调用show方法渲染一次。

销毁广告

sdk中的广告已与loadSplashAd传入的参数Activity的生命周期绑定,开发者无需在onDestroy中销毁。

插屏广告

概述

插屏广告是移动广告的一种常见形式,一般在应用使用过程中弹出,用户可以选择点击广告以访问目标网址,或者关闭广告以返回应用。 插屏广告有两种形式:半屏和全屏。两者都覆盖整个屏幕,区别在于广告内容的展示区域大小。半屏广告在展示区域之外,背景为半透明。

插屏广告分为全屏和半屏两种,两种加载方式没有区别,都与开屏类似。

广告加载参数AdLoadParams.Builder方法说明

方法说明
Builder setSposId(String sposId)设置开屏代码位id
Builder setMute(boolean isMute)设置视频素材是否默认静音
Builder setShakeButton(boolean isShakeButton)设置是否摇一摇功能(不设置默认开启)
Builder setLoadTimeOut(int loadTimeOut)设置广告加载的超时时长
AdLoadParams build()返回AdLoadParams用于加载开屏广告

加载插屏广告AdLoadParams设置以上参数有效,其余参数sdk不做处理。

AdvistaSdk插屏相关方法说明

方法说明
void loadInterstitialAd(Activity activity, AdLoadParams params, AdListener listener)加载开屏广告,调用AdvistaSdk.getInstance().loadInterstitialAd()方法
boolean isReady()判断当前广告是否可用
void showAd()在当前Activity的根布局填充插屏广告,在AdListener.onAdLoaded(TemplateAd templateAd)回调中调用templateAd.getAdControllerProxy().showAd()
void showAd(ViewGroup viewGroup)在传入的viewGroup布局填充插屏广告,在AdListener.onAdLoaded(TemplateAd templateAd)回调中调用templateAd.getAdControllerProxy().showAd(mContainer)

AdListener回调方法说明:

方法说明
void onLoadError(int code, String msg)广告加载失败,code 加载广告的错误码,msg 加载广告的错误信息
void onShowError(int code, String msg)广告渲染失败,code渲染广告的错误码,msg 渲染广告的错误信息
void onAdLoaded(TemplateAd templateAd)广告加载成功,templateAd 广告素材加载成功获取到的对象,用于媒体调用
void onResourceReady()广告素材缓存成功,此时可调用templateAd的show方法直接展示
void onAdExposure()广告曝光成功的回调
void onAdExposureFailed(int code, String msg)广告曝光失败的回调
void onAdClicked()广告交互的回调,包含点击、摇一摇等
void onAdSkipped()广告点击跳过的回调
void onAdClosed()广告关闭的回调

加载插屏广告

先初始化回调的接口:

AdListener adListener = new AdListener() {
    /**
     *
     * @param code 加载广告的错误码
     * @param msg 加载广告的错误信息
     */
    @Override
    public void onLoadError(int code, String msg) {

    }

    /**
     *
     * @param code 渲染广告的错误码
     * @param msg 渲染广告的错误信息
     */
    @Override
    public void onShowError(int code, String msg) {

    }

    /**
     *
     * @param templateAd 广告加载成功获取到的对象,用于媒体调用
     */
    @Override
    public void onAdLoaded(TemplateAd templateAd) {

    }
  
  
  	/**
     *
     * 广告素材缓存成功
     */
  	@Override
    public void onResourceReady() {
        
    }
  
  
  	/**
     * 广告素材缓存成功的回调
     */
    @Override
    public void onResourceReady() {

    }

    /**
     * 广告曝光成功的回调
     */
    @Override
    public void onAdExposure() {

    }

   	/**
     * 广告曝光失败
     * @param code 曝光广告的错误码
     * @param msg 曝光广告的错误信息
     */
    @Override
    public void onAdExposureFailed(int code, @Nullable String msg) {

    }


    /**
     * 广告交互的回调,包含点击、摇一摇等
     */
    @Override
    public void onAdClicked() {

    }
  
  	/**
     * 广告点击跳过的回调
     */
    @Override
    public void onAdSkipped() {

    }

    /**
     * 广告关闭的回调
     */
    @Override
    public void onAdClosed() {

    }
};

调用方法加载插屏广告:

AdLoadParams params = new AdLoadParams.Builder()
                .setSposId("插屏代码位id")
                .setMute(true)
                .setShakeButton(true)
                .setLoadTimeOut(5000)
                .build();
AdvistaSdk.getInstance().loadInterstitialAd(this, params,adListener);

获取cpm价格

在上一步广告加载成功后,可以拿到TemplateAd对象,可以通过以下方式获取价格:

templateAd.getAdControllerProxy().getECPM();

获取requestId

在上一步广告加载成功后,可以拿到TemplateAd对象,可以通过以下方式获取当前广告的requestId:

templateAd.getAdControllerProxy().getRequestId();

渲染广告

加载成功拿到TemplateAd对象之后,可以在onResourceReady回调成功后,调用show方法渲染广告,方法与开屏一致。

templateAd.getAdControllerProxy().showAd();
templateAd.getAdControllerProxy().showAd(mContainer);

广告加载与渲染过程中的错误信息会在onLoadError和onShowError中回调,整体流程与开屏一致。

插屏广告请求示例:

String popupSposId = "323812";//插屏广告位id 需要与平台上当前应用创建的广告位id一致
AdLoadParams params = new AdLoadParams.Builder()
                .setSposId(popupSposId)
                .setMute(true)
                .setShakeButton(true)
                .setLoadTimeOut(5000)
                .build();
AdvistaSdk.getInstance().loadInterstitialAd(this, params, new AdListener() {

    @Override
    public void onLoadError(int code, String msg) {
        //插屏广告加载报错 code 错误码 msg 错误信息
    }

    @Override
    public void onShowError(int code, String msg) {
        //调用show方法报错 code 错误码 msg 错误信息
    }

    @Override
    public void onAdLoaded(TemplateAd templateAd) {
        //广告加载成功
     		//在这里可以获取当前广告的价格 以及素材缓存的状态
        templateAd.getAdControllerProxy().getECPM();//获取广告价格
        templateAd.getAdControllerProxy().getRequestId();//获取广告请求id
      	templateAd.getAdControllerProxy().isReady();//素材是否缓存成功 效果同下方onResourceReady
    }
  
  	@Override
    public void onResourceReady() {
        //调用show方法展示广告(无论哪种show方法只可以调用一次)
        templateAd.getAdControllerProxy().showAd(); //在当前activity根布局展示插屏广告
        templateAd.getAdControllerProxy().showAd(mContainer); //在指定区域内展示插屏广告,剩余区域开发者自行渲染
    }

    @Override
    public void onAdExposure() {
        //插屏广告曝光成功
    }

    @Override
    public void onAdExposureFailed(int code, String msg) {
        //插屏广告曝光失败 code 错误码 msg 错误信息
    }

    @Override
    public void onAdClicked() {
        //插屏广告点击成功(包括摇一摇等交互)
    }
  
  	@Override
    public void onAdSkipped() {
  			//广告点击跳过
    }

    @Override
    public void onAdClosed() {
        //插屏广告关闭
    }
});

原生广告

概述

原生广告是一种与应用内容和设计自然融合的广告形式,开发者只需按照标准集成步骤即可在应用中无缝展示广告内容。原生广告能够与应用的界面和用户体验协调一致,不会干扰用户的正常使用。用户可以在浏览应用内容时自然地接触到这些广告,从而提高广告的接受度和互动性。开发者可以根据应用的风格和用户的需求定制广告的展示方式,以实现最佳的广告效果和用户体验。

模板渲染

SDK提供多种的广告模板样式,上下图文、左右图文、三小图等

模板渲染场景常见于应用的内容信息流中与应用内容穿插展示,如资讯列表页每隔几条资讯穿插一条广告。

广告加载参数AdLoadParams.Builder方法说明

方法说明
Builder setSposId(String sposId)设置开屏代码位id
Builder setMute(boolean isMute)设置视频素材是否默认静音
Builder setShakeButton(boolean isShakeButton)设置是否摇一摇功能(不设置默认开启)
Builder setLoadTimeOut(int loadTimeOut)设置广告加载的超时时长
Builder setWidth(int width)广告需要渲染的宽,单位dp,支持穿ViewGroup.LayoutParams.MATCH_PARENT
Builder setHeight(int height)广告需要渲染的宽,单位dp,支持穿ViewGroup.LayoutParams.WRAP_CONTENT
AdLoadParams build()返回AdLoadParams用于加载开屏广告

AdvistaSdk原生广告相关方法说明

方法说明
void loadNativeAd(Activity activity, AdLoadParams params, AdListener listener)加载原生广告,根据传入的宽高来计算缩放的比例,调用AdvistaSdk.getInstance().loadNativeAd()方法
boolean isReady()判断当前广告是否可用
void showAd(ViewGroup viewGroup)在传入的viewGroup布局填充原生广告,在AdListener.onAdLoaded(TemplateAd templateAd)回调中调用templateAd.getAdControllerProxy().showAd(mContainer)

AdListener回调方法说明:

方法说明
void onLoadError(int code, String msg)广告加载失败,code 加载广告的错误码,msg 加载广告的错误信息
void onShowError(int code, String msg)广告渲染失败,code 渲染广告的错误码,msg 渲染广告的错误信息
void onAdLoaded(TemplateAd templateAd)广告加载成功,templateAd 广告素材加载成功获取到的对象,用于媒体调用
void onResourceReady()广告素材缓存成功,此时可调用templateAd的show方法直接展示
void onAdExposure()广告曝光成功的回调
void onAdExposureFailed(int code, String msg)广告曝光失败的回调
void onAdClicked()广告交互的回调,包含点击、摇一摇等
void onAdSkipped()广告点击跳过的回调
void onAdClosed()广告关闭的回调

加载广告

原生广告加载方式相对于开屏和插屏广告新增了广告尺寸的参数,广告会根据传入的尺寸信息来进行加载,首先还是构造广告的回调接口:

AdListener adListener = new AdListener() {
    /**
     *
     * @param code 加载广告的错误码
     * @param msg 加载广告的错误信息
     */
    @Override
    public void onLoadError(int code, String msg) {

    }

    /**
     *
     * @param code 渲染广告的错误码
     * @param msg 渲染广告的错误信息
     */
    @Override
    public void onShowError(int code, String msg) {

    }

    /**
     *
     * @param templateAd 广告加载成功获取到的对象,用于媒体调用
     */
    @Override
    public void onAdLoaded(TemplateAd templateAd) {

    }
  
  	/**
     * 广告素材缓存成功的回调
     */
    @Override
    public void onResourceReady() {

    }

    /**
     * 广告曝光成功的回调
     */
    @Override
    public void onAdExposure() {

    }

   /**
     * 广告曝光失败
     * @param code 曝光广告的错误码
     * @param msg 曝光广告的错误信息
     */
    @Override
    public void onAdExposureFailed(int code, @Nullable String msg) {

    }

    /**
     * 广告交互的回调,包含点击、摇一摇等
     */
    @Override
    public void onAdClicked() {

    }
  
  	@Override
    public void onAdSkipped() {
  			//广告点击跳过
    }
  
  	/**
     * 广告点击跳过的回调
     */
    @Override
    public void onAdSkipped() {

    }

    /**
     * 广告关闭的回调
     */
    @Override
    public void onAdClosed() {

    }
};

原生广告的加载方法需要传入width信息,单位为dp,高度信息可不传,高度会根据传入的宽度与原生广告的模版去计算自适应。

 AdLoadParams feedsParams = new AdLoadParams.Builder()
                .setSposId(feedsSposId)
                .setMute(true)
                .setShakeButton(true)
                .setWidth(screenWidthDp)
                .setHeight(ViewGroup.LayoutParams.WRAP_CONTENT)
                .setLoadTimeOut(5000)
                .build();
AdvistaSdk.getInstance().loadNativeAd(this, params, adListener);

如果width参数传入ViewGroup.LayoutParams.MATCH_PARENT(-1),sdk会主动获取屏幕宽度去加载广告。目前的原生广告默认竖屏模板渲染,推荐width传入屏幕的宽度,高度自适应。

获取cpm价格

在上一步广告加载成功后,可以拿到TemplateAd对象,可以通过以下方式获取价格:

templateAd.getAdControllerProxy().getECPM();

获取requestId

在上一步广告加载成功后,可以拿到TemplateAd对象,可以通过以下方式获取当前广告的requestId:

templateAd.getAdControllerProxy().getRequestId();

渲染广告

对于原生广告只能通过以下方式渲染:

templateAd.getAdControllerProxy().showAd(mContainer);

其中container是装载广告的容器,在加载时尽量传入容器的真实尺寸(单位dp)。

原生广告加载示例:

String feedsSposId = "223200";//原生广告位id 需要与平台上当前应用创建的广告位id一致
int screenWidthDp = getResources().getConfiguration().screenWidthDp;//推荐原生广告加载传入屏幕宽度, 单位dp,也可传入ViewGroup.LayoutParams.MATCH_PARENT,也可传入自定义值(sdk根据传入的值做缩放处理)
 AdLoadParams feedsParams = new AdLoadParams.Builder()
                .setSposId(feedsSposId)
                .setMute(true)
                .setShakeButton(true)
                .setWidth(screenWidthDp)
                .setHeight(ViewGroup.LayoutParams.WRAP_CONTENT)//如高度不需要自适应,可传入具体height
                .setLoadTimeOut(5000)
                .build();
AdvistaSdk.getInstance().loadNativeAd(this, params, new AdListener() {
    @Override
    public void onLoadError(int code, String msg) {
        //原生加载报错 code 错误码 msg 错误信息
    }

    @Override
    public void onShowError(int code, String msg) {
        //调用show方法报错 code 错误码 msg 错误信息
    }

    @Override
    public void onAdLoaded(TemplateAd templateAd) {
        //原生广告加载成功
        //在这里可以获取原生广告的价格 以及素材缓存的状态
        templateAd.getAdControllerProxy().getECPM();//获取广告价格
        templateAd.getAdControllerProxy().getRequestId();//获取广告请求id
      	templateAd.getAdControllerProxy().isReady();//素材是否缓存成功 效果同下方onResourceReady
    }
  
  	@Override
    public void onResourceReady() {
        //以及调用show方法展示广告
        templateAd.getAdControllerProxy().showAd(mContainer); //在指定区域内展示原生广告,原生广告调用show方法必须传入广告容器对象
    }

    @Override
    public void onAdExposure() {
        //原生广告曝光成功
    }

    @Override
    public void onAdExposureFailed(int code, String msg) {
        //原生广告曝光失败 code 错误码 msg 错误信息
    }

    @Override
    public void onAdClicked() {
        //原生广告点击成功(包括摇一摇等交互)
    }
  
  	@Override
    public void onAdSkipped() {
  			//广告点击跳过
    }

    @Override
    public void onAdClosed() {
        //原生广告关闭
    }
});

激励视频广告

概述

激励视频广告是一种全屏视频形式,用户完整观看后可领取奖励。这种广告常见于游戏中,如复活、获取道具或额外通关奖励等场景,以及应用内的增值服务,例如单次体验付费功能。

广告加载参数AdLoadParams.Builder方法说明

方法说明
Builder setSposId(String sposId)设置激励视频代码位id
Builder setMute(boolean isMute)设置视频素材是否默认静音
Builder setShakeButton(boolean isShakeButton)设置是否摇一摇功能(不设置默认开启)
Builder setUserId(String userId)使用服务端激励时,需要调用此方法
开发者应用的用户id,会透传到请求客户的回调url中,开发中需要使用广告网络服务端激励功能时,需要设置此参数
Builder setExtraInfo(String extraInfo)自定义的附加参数,会透传到请求客户的回调url中,开发中需要使用广告网络服务端激励功能时,按需设置此参数
Builder setLoadTimeOut(int loadTimeOut)设置广告加载的超时时长
AdLoadParams build()返回AdLoadParams用于加载激励视频广告

加载激励视频广告AdLoadParams设置以上参数有效,其余参数sdk不做处理。

AdvistaSdk激励视频广告相关方法说明

方法说明
void loadRewardVideoAd(Activity activity, AdLoadParams params, RewardAdListener listener)加载激励视频广告,调用AdvistaSdk.getInstance().loadRewardVideoAd()方法
boolean isReady()判断当前广告是否可用
void showAd()在当前Activity的根布局填充开屏广告,在AdListener.onAdLoaded(TemplateAd templateAd)回调中调用templateAd.getAdControllerProxy().showAd()

RewardAdListener回调方法说明:

方法说明
void onLoadError(int code, String msg)广告加载失败,code加载广告的错误码,msg 加载广告的错误信息
void onShowError(int code, String msg)广告渲染失败,code 渲染广告的错误码,msg 渲染广告的错误信息
void onAdLoaded(TemplateAd templateAd)广告加载成功,templateAd 广告素材加载成功获取到的对象,用于媒体调用
void onResourceReady()广告素材缓存成功,此时可调用templateAd的show方法直接展示
void onRewardVerify(RewardInfo rewardInfo)广告激励结果回调,rewardInfo中可获取到激励相关信息
void onAdExposure()广告曝光成功的回调
void onAdExposureFailed(int code, String msg)广告曝光失败的回调
void onAdClicked()广告交互的回调,包含点击、摇一摇等
void onAdSkipped()广告点击跳过的回调
void onAdClosed()广告关闭的回调

RewardInfo回调方法说明:

方法说明
boolean isRewardValid()返回广告激励的结果
String getUserId()返回媒体传入的userId
String getTransId()返回本次广告请求的requestId
int getRewardAmount()平台配置的奖励数量,若未配置则为空
String getRewardName()平台配置的奖励数量,若未配置则为空
int getErrCode()需要服务端验证时,访问开发者服务器时返回的错误码
String getErrMsg()需要服务端验证时,访问开发者服务器时返回的错误信息
String getExtraInfo()透传开发者传入的extraInfo参数

加载激励视频广告

先初始化回调的方法:

RewardAdListener rewardAdListener = new RewardAdListener() {

    /**
     * 
     * @param rewardInfo 广告奖励信息回调
     */
    @Override
    public void onRewardVerify(RewardInfo rewardInfo) {

    }

    /**
     *
     * @param code 加载广告的错误码
     * @param msg 加载广告的错误信息
     */
    @Override
    public void onLoadError(int code, String msg) {

    }

    /**
     *
     * @param code 渲染广告的错误码
     * @param msg 渲染广告的错误信息
     */
    @Override
    public void onShowError(int code, String msg) {

    }
  
    /**
     *
     * @param templateAd 广告加载成功获取到的对象,用于媒体调用
     */
    @Override
    public void onAdLoaded(TemplateAd templateAd) {

    }
    

    /**
     * 广告状态可用的回调
     */
    @Override
    public void onResourceReady() {

    }

    /**
     * 广告曝光成功的回调
     */
    @Override
    public void onAdExposure() {

    }

    /**
     * 广告曝光失败
     * @param code 曝光广告的错误码
     * @param msg 曝光广告的错误信息
     */
    @Override
    public void onAdExposureFailed(int code, String msg) {

    }


    /**
     * 广告交互的回调,包含点击、摇一摇等
     */
    @Override
    public void onAdClicked() {

    }

    /**
     * 广告点击跳过的回调
     */
    @Override
    public void onAdSkipped() {

    }

    /**
     * 广告关闭的回调
     */
    @Override
    public void onAdClosed() {

    }
};

调用方法加载激励视频广告:

AdLoadParams params = new AdLoadParams.Builder()
        .setSposId("spos_id")
        .setUserId("user_id")
        .setExtraInfo("extra_info")
        .setMute(true)
        .setShakeButton(true)
        .setLoadTimeOut(5000)
        .build();
AdvistaSdk.getInstance().loadRewardVideoAd(this, params, rewardAdListener);

获取cpm价格

在上一步广告加载成功后,可以拿到TemplateAd对象,可以通过以下方式获取价格:

templateAd.getAdControllerProxy().getECPM();

渲染广告

加载成功拿到TemplateAd对象之后,可以在onResourceReady回调成功后,调用show方法渲染广告,方法与开屏一致。

templateAd.getAdControllerProxy().showAd();

获取激励回调信息

在onRewardVerify回调中可以获取激励的结果信息

boolean rewardValid = rewardInfo.isRewardValid(); //是否发放奖励 其余参数参照上面表格

广告加载与渲染过程中的错误信息会在onLoadError和onShowError中回调,整体流程与开屏一致。

激励视频请求示例:

String rewardVideoSposId = "999999";
AdLoadParams params = new AdLoadParams.Builder()
        .setSposId("spos_id")
        .setUserId("user_id")
        .setExtraInfo("extra_info")
        .setMute(true)
        .setShakeButton(true)
        .setLoadTimeOut(5000)
        .build();
AdvistaSdk.getInstance().loadRewardVideoAd(this, params, new RewardAdListener() {
    @Override
    public void onRewardVerify(RewardInfo rewardInfo) {
        //激励视频广告激励验证结果信息
      	boolean isRewardValid = rewardInfo.isRewardValid();//判断奖励是否发放
    }

    @Override
    public void onLoadError(int code, String msg) {
        //激励视频广告加载报错 code 错误码 msg 错误信息
    }

    @Override
    public void onShowError(int code, String msg) {
        //调用show方法报错 code 错误码 msg 错误信息
    }

    @Override
    public void onAdLoaded(TemplateAd rewardVideoAd) {
        //广告加载成功
        //在这里可以获取当前广告的价格 以及素材缓存的状态
        rewardVideoAd.getAdControllerProxy().getECPM();//获取广告价格
        rewardVideoAd.getAdControllerProxy().getRequestId();//获取广告请求id
        rewardVideoAd.getAdControllerProxy().isReady();//素材是否缓存成功 效果同下方onResourceReady
    }

    @Override
    public void onResourceReady() {
        //调用show方法展示广告
        rewardVideoAd.getAdControllerProxy().showAd(); //在当前activity根布局展示激励视频广告
    }

    @Override
    public void onAdExposure() {
        //激励视频广告曝光成功
    }

    @Override
    public void onAdExposureFailed(int code, String msg) {
        //激励视频广告曝光失败 code 错误码 msg 错误信息
    }

    @Override
    public void onAdClicked() {
        //激励视频广告点击成功(包括摇一摇等交互)
    }

    @Override
    public void onAdSkipped() {
        //广告点击跳过
    }

    @Override
    public void onAdClosed() {
        //广告关闭
    }
});

激励视频服务端验证

服务端奖励验证用于帮助媒体判定是否提供奖励给观看广告的用户,当用户成功看完广告时,会向媒体在Advista平台中配置的验证接口发送验证请求,并携带广告和媒体自定义参数信息,由媒体来判断此次观看是否给用户发放奖励。Advista服务端不会主动干预奖励的成功与失败。

服务端回调说明

Advista服务端会发送请求至媒体在Advista平台广告位配置的URL服务端,拼接参数如下:

请求类型 :GET

请求参数:

字段名称字段含义字段类型备注
transId交易idstring签名
userId用户idstring用户唯一id,媒体调用SDK透传
sposId代码位idstring代码位id
price广告价格int单位分,币种 CNY
appId应用idstring应用id
rewardAmount奖励数量int奖励数量
rewardName奖励名称string奖励名称
extraExtrastring媒体自定义参数,SDK透传
sign签名string验签

签名生成方式:

sign = sha256(transId:securityKey) //securityKey:当前代码位对应的SecurityKey

在Advista平台配置回调url的时候,需要按照以下格式进行配置:

http://127.0.0.1:8889/log/callback?sign=__SIGN__&userId=__USER_ID__&transId=__TRANS_ID__&appId=__APP_ID__&sposId=__SPOS_ID__&price=__PRICE__&rewardAmount=__REWARD_AMOUNT__&rewardName=__REWARD_NAME__&extra=__EXTRA_INFO__

其中http://127.0.0.1:8889/log/callback为客户的服务端回调url的地址,后面为各个参数的设置,客户可以按照需要进行配置。例如:

http://127.0.0.1:8889/log/callback?userId=__USER_ID__&transId=__TRANS_ID__

Advista平台请求回调url时,只会携带回调url上配置的宏参数。

约定返回的参数:

字段名称字段含义类型备注
isValid校验结果boolean判定结果,是否发放奖励 true发放 false不发放

返回参数示例:

{
	"isValid":true
}

开发者自渲染原生广告

当SDK提供的原生模版渲染广告的样式和展示场景无法满足需求时,可以采用原生开发者自渲染广告

广告加载参数AdLoadParams.Builder方法说明

方法说明
Builder setSposId(String sposId)设置自渲染代码位id
Builder setShakeButton(boolean isShakeButton)设置是否摇一摇功能(不设置默认开启)
Builder setLoadTimeOut(int loadTimeOut)设置广告加载的超时时长
AdLoadParams build()返回AdLoadParams用于加载自渲染广告

AdvistaSdk原生自渲染广告相关方法说明

方法说明
void loadSelfRenderNativeAd(Activity activity, AdLoadParams params, AdListener listener)加载原生自渲染广告,调用AdvistaSdk.getInstance().loadSelfRenderNativeAd()方法

AdListener回调方法说明:

方法说明
void onNativeFeedAdLoaded(NativeFeedsData nativeFeedsData)广告加载成功,nativeFeedsData包含当前广告的渲染素材信息
void onLoadError(int code, String msg)广告加载失败,code 加载广告的错误码,msg 加载广告的错误信息

NativeFeedsData中的方法说明:

方法说明
int getMaterialType()广告素材类型: 0图片、1视频
String getVideoUrl()广告视频素材地址
String getImageUrl()广告图片素材地址
String getIconUrl()广告icon图片素材地址
Bitmap getAdsLogoBitmap()广告获取角标素材Bitmap
String getDesc()广告描述
int getECPM()广告价格,单位分
String getTitle()广告标题
NMPlayerView getNmApAdVideo()广告返回视频素材View
boolean supportShake()是否支持摇一摇
setShakeWidth(int shakeWidth)设置摇一摇区域宽度
setShakeHeight(int shakeHeight)设置摇一摇区域高度
registerSelfRenderViews()向sdk注册渲染的View和用于点击交互的arrayList
void destroy()销毁当前广告

NativeAdEventListener回调方法说明:

方法说明
void onAdExposure();广告曝光成功
void onAdExposureFailed(int code, String msg);广告曝光失败,code 曝光失败的错误码,msg 曝光失败的错误信息
void onAdClicked();广告交互成功,包含点击、摇一摇等交互

NativeVideoViewListener视频回调说明:

方法说明
void onVideoLoading()视频加载中
void onVideoReady()视频加载完成
void onVideoStart()视频开始播放
void onVideoProgress(double progress)视频播放进度回调
void onVideoPause()视频播放暂停
void onVideoResume()视频恢复播放
void onVideoCompleted()视频播放完成
void onVideoStop()视频播放终止
void onVideoError(int code)视频播放报错(参考MediaPlayer ErrorCode)

原生自渲染广告加载渲染示例:

AdLoadParams params = new AdLoadParams();
params.sposId = "223200";
params.loadTimeOut = 5000;
AdvistaSdk.getInstance().loadSelfRenderNativeAd(this, params, new NativeAdListener() {
                @Override
                public void onNativeFeedAdLoaded(NativeFeedsData nativeFeedsData) {
                    //加载成功 渲染素材
                    renderUi(nativeFeedsData);
                }

                @Override
                public void onLoadError(int code, String msg) {
                    //code 加载失败的错误码 msg加载失败的错误信息
                }
            });

//渲染广告素材
 private void renderUi(NativeFeedsData nativeFeedsData) {
        mAdContainer = (ConstraintLayout) LayoutInflater.from(this).inflate(R.layout.self_render_layout, mSelfContainer, false);
        mIvAd = mAdContainer.findViewById(R.id.iv_ad);
        mIvLogo = mAdContainer.findViewById(R.id.iv_logo);
        mIvAdsLogo = mAdContainer.findViewById(R.id.iv_ad_logo);
        mTitle = mAdContainer.findViewById(R.id.tv_title);
        mSubTitle = mAdContainer.findViewById(R.id.tv_sub_title);
        mContainer = mAdContainer.findViewById(R.id.container);

        mIvAdsLogo.setImageBitmap(nativeFeedsData.getAdsLogoBitmap());
        Glide.with(this).load(nativeFeedsData.getIconUrl()).into(mIvLogo);
        mTitle.setText(nativeFeedsData.getTitle());
        mSubTitle.setText(nativeFeedsData.getDesc());
        if (nativeFeedsData.getMaterialType() == NativeFeedsData.MATERIAL_TYPE_IMAGE) {
            Glide.with(this).load(nativeFeedsData.getImageUrl()).into(mIvAd);
        } else {
          	//如果是视频广告需要渲染视频播放相关ui
            nmPlayerView = nativeFeedsData.getNmApAdVideo();
            //设置视频播放监听,可自行定制相关ui
          	nmPlayerView.setVideoViewListener(new NativeVideoViewListener() {
                @Override
                public void onVideoLoading() {
                    //视频加载中
                }

                @Override
                public void onVideoReady() {
                    //视频加载成功
                }

                @Override
                public void onVideoStart() {
                    //视频开始播放
                    isPause = false;
                }


                @Override
                public void onVideoProgress(double progress) {
                    mProgressBar.setMax(100);
                    mProgressBar.setProgress((int) progress);
                }

                @Override
                public void onVideoPause() {
                    //视频暂停
                    isPause = true;
                    mIvPause.setVisibility(View.VISIBLE);
                }

                @Override
                public void onVideoResume() {
                    //视频恢复播放
                    isPause = false;
                }

                @Override
                public void onVideoCompleted() {
                    //视频播放结束
                    mIvPause.setVisibility(View.VISIBLE);
                }

                @Override
                public void onVideoStop() {
                    //视频停止播放
                    mIvPause.setVisibility(View.VISIBLE);
                }

                @Override
                public void onVideoError(int i) {
                    //视频播放报错
                }
            });
          	//设置视频是否静音
            nmPlayerView.setVideoMute(false);
          	//将视频播放的view添加到容器中
            mContainer.removeAllViews();
            nmPlayerView.show(mContainer);
        }

        //用于点击交互的view集合
        ArrayList<View> arrayList = new ArrayList<>();
        arrayList.add(mIvAd);
        //设置摇一摇的大小,单位dp 摇一摇默认在渲染区域居中显示
        if (nativeFeedsData.supportShake()){
            nativeFeedsData.setShakeWidth(100);
            nativeFeedsData.setShakeHeight(150);
        }

        //向sdk注册渲染的View和用于点击交互的arrayList
        nativeFeedsData.registerSelfRenderViews(this, mAdContainer, arrayList, new NativeAdEventListener() {
            @Override
            public void onAdExposure() {
                 //广告曝光成功
            }

            @Override
            public void onAdExposureFailed(int code, String msg) {
                //广告曝光失败 code错误码 msg错误信息
            }

            @Override
            public void onAdClicked() {
                //广告交互成功,包含点击、摇一摇等
            }
        });

   			//填充自渲染的view到界面上展示 需保证广告内容可见 否则曝光失败
        mSelfContainer.removeAllViews();
        mSelfContainer.addView(mAdContainer);
    }

加载与渲染过程中的异常回调与开屏广告、插屏广告一致,具体错误码和错误信息对照请参考《sdk错误信息表》。

三方聚合平台接入指引

Taku 自定义接入 Advista SDK 说明文档

参考链接:

Taku聚合自定义广告文档:

​ Taku聚合提供的自定义广告平台文档:https://help.takuad.com/docs/fRMh7C

Taku自定义Adapter类继承类说明文档:

​ Android:https://help.takuad.com/docs/4M5AIaopen in new window

​ IOS:https://help.takuad.com/docs/iHxZQZopen in new window

步骤:

1.引入AdvistaSdk

1.1 将SDK资源包中libs目录下的aar包复制到project项目的libs目录下,并在build.gradle文件添加依赖。

implementation(files("libs/advista-1.7.2-release.aar"))

1.2 将Taku适配器代码放到当前项目中

image-20250520102925215

2.在Taku平台配置自定义广告网络相关内容

2.1 广告平台-新建广告平台

image-20250519161349149

2.2 设置广告相关adapter类

modify_adater

这里Android Adapter填入当前项目对应的适配器相关类的绝对路径,如:com.example.demo.taku.AdvistaSplashAdapter

开屏位置填写:
com.xxx.xxx.taku.AdvistaSplashAdapter
插屏位置填写:
com.xxx.xxx.taku.AdvistaInterstitialAdapter
原生位置填写:
com.xxx.xxx.taku.AdvistaNativeAdapter

2.3 设置应用id及代码位id名称

image-20250520134227417

2.4 配置广告源

聚合管理-新增广告源-选择新建的自定义广告平台

在图示参数位置填写对应的参数

image-20250520133215860

这里代码位ID填写Advista平台当前appId所对应的代码位ID

头部竞价逻辑:

开启头部竞价后,Taku会在每次请求时向广告平台实时询价,并根据询价结果进行优先级排序。

不开启头部竞价时,该价格仅用于广告请求时的优先级排序,并不会回传给广告平台。如果在广告平台设置了eCPM底价,建议此处填写的价格与eCPM底价保持一致。

如果是原生广告类型,有以下额外配置:

key_width:广告宽度,原生模板渲染,单位是dp(传当前广告容器的宽度),如不填默认用当前屏幕宽度(ViewGroup.LayoutParams.MATCH_PARENT)

key_height:广告高度,原生模板渲染,单位是dp(传当前广告容器的高度),如不填默认自适应(ViewGroup.LayoutParams.WRAP_CONTENT)

image-20250519181108202

Gromore自定义接入Advista SDK说明文档

参考链接:

Gromore聚合自定义广告网络文档(需要登录后方可查看):

Gromore聚合提供的自定义广告网络文档:https://www.csjplatform.com/supportcenter/5878

Gromore自定义广告网络基类方法说明:

Gromore提供的自定义广告网络基类方法说明-Android:https://www.csjplatform.com/union/media/union/download/detail?id=161&docId=27723&locale=undefined&osType=android

步骤:

1.引入AdvistaSdk

1.1 将SDK资源包中libs目录下的aar包复制到project项目的libs目录下,并在build.gradle文件添加依赖。

implementation(files("libs/advista-1.7.2-release.aar"))

1.2 将Gromore适配器代码放到当前项目中

image-20250818164947901

2.在Gromore平台配置自定义广告网络相关内容

2.1 应用管理-广告网络-管理广告网络-添加自定义广告网络

image-20250818171358615

2.2 设置广告相关adapter类

image-20250818173810986

这里Android Adapter填入当前项目对应的适配器相关类的绝对路径,

如:com.xxx.xxx.gromore.AdvistaCustomSplashLoader (com.xxx.xxx替换成当前类的文件路径)

初始化类名填写:
com.xxx.xxx.gromore.AdvistaCustomInit
开屏位置填写:
com.xxx.xxx.gromore.AdvistaCustomSplashLoader
插屏位置填写:
com.xxx.xxx.gromore.AdvistaCustomInterstitialLoader
原生位置填写:
com.xxx.xxx.gromore.AdvistaCustomFeedLoader
激励视频填写:
com.xxx.xxx.gromore.AdvistaCustomRewardVideoLoader

2.3 设置应用id及代码位id名称

广告网络-编辑广告网络,设置AppId相关信息

image-20250818180143825

2.4瀑布流管理-添加代码位-设置代码位信息

image-20250818182252069

这里代码位ID填写Advista平台当前appId所对应的代码位ID

客户端竞价逻辑:

开启客户端竞价后,Gromore会在每次请求时向广告平台实时询价,并根据询价结果进行优先级排序。

不开启客户端竞价时,该价格仅用于广告请求时的优先级排序,并不会回传给广告平台。如果在Advista平台设置了eCPM底价,建议此处填写的价格与eCPM底价保持一致。

ToBid自定义接入Advista SDK说明文档

参考链接:

Tobid自定义适配器说明:https://doc.sigmob.com/ToBid%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/SDK%E9%9B%86%E6%88%90%E8%AF%B4%E6%98%8E/Android/%E9%AB%98%E7%BA%A7%E8%AE%BE%E7%BD%AE/%E8%87%AA%E5%AE%9A%E4%B9%89%E5%B9%BF%E5%91%8A%E7%BD%91%E7%BB%9C/

步骤:

1.引入AdvistaSdk

1.1 将SDK资源包中libs目录下的aar包复制到project项目的libs目录下,并在build.gradle文件添加依赖。

implementation(files("libs/advista-1.7.2-release.aar"))

1.2将Tobid的适配器代码放到当前项目中

image-20250903104513883

2.在Tobid平台配置自定义广告网络的相关内容

2.1广告网络-管理自定义广告网络-新建自定义广告网络

image-20250903110226551

2.2设置相关广告加载的类

image-20250903111228752

这里类名填入当前项目对应的适配器相关类的绝对路径,如:com.example.demo.tobid.AdvistaCuttomerSplashAdapter

2.3设置Advista广告对应的应用id

流量管理-应用管理-编辑广告网络参数

这里设置Advista平台的appid

image-20250903113212755

2.4配置广告源

瀑布流管理-添加广告源

image-20250903114520026

这里代码位ID填写Advista平台当前appId所对应的代码位ID

竞价逻辑:

开启头部竞价后,Tobid会在每次请求时向广告平台实时询价,并根据询价结果进行优先级排序。

不开启头部竞价时,该价格仅用于广告请求时的优先级排序,并不会回传给广告平台。如果在广告平台设置了eCPM底价,建议此处填写的价格与eCPM底价保持一致。

SDK错误信息表

Android SDK调用过程错误码对照表

10001    初始化失败
10002    sdk已经初始化
10003    sdk未初始化
60001    无广告填充
60002    应用ID或代码位ID不存在
60003    代码位ID为空
60004    应用或代码位ID不合法
60005    代码位ID不合法
60006    应用或代码位ID不匹配
60007    代码位类型不匹配
60008    代码位请求尺寸不能为空
60009    加载超时
60010    其他异常,请联系技术人员
60011    AdListener对象为空
70001    viewGroup为空
70002    广告超时
70003    请将原生广告添加到viewGroup中
70004    原生广告容器太小,无法渲染素材
70005    广告已被销毁
70006    广告已经在展示
70007    广告渲染类型不匹配

sdk资源下载

SDK 名称Advista 广告 SDK
开发者上海推易软件技术有限公司
SDK 包名com.jiaads.advista
SDK 版本1.7.2
更新时间2026-02-04
SDK MD539c0844f097c72fd6fd3c0a45a98f8ad
功能介绍提供广告的拉取和展示功能,接入的开发者可以获得广告收益
SDK 下载点击下载

Taku适配器代码

Gromore适配器代码

Tobid适配器代码

Logo

上次更新:
贡献者: jianzou, jianzhou, yinpp, haibo.du
Prev
Advista 流量变现平台用户服务协议
Next
iOS 集成手册