更新历史:

版本 开发者 更新日期 更新内容
v1.1.4 heyy 2019-07-19
1. 升级头条广告版本;
1. Banner类型的广告升级(2019.9.1之前有接入Banner类型的游戏务必升级此SDK);
v1.1.5 junewong 2019-08-15
1. 升级深度统计到3.3.4版本;
v1.1.6 ruansen 2019-11-27 1.升级头条广告版本为v2.5.2.6
v1.2.0 ruansen 2020-01-04 1.加入新的统计平台
v1.2.1 heyouying 2020-01-09 1.穿山甲激励视频广告增加服务器校验奖励回调;
v1.2.3 ruansen 2020-02-03 1.升级头条广告版本为v2.7.5.2;
2.新增个性化模板信息流广告;
3.升级注意:依赖配置新增cardview-v7:28.0.0。
v1.2.4 ruansen 2020-02-06 1.安卓端增加开屏广告类型;
v1.2.5 ruansen 2020-02-12 1.新增接口:json配置控制banner高度;
2.升级注意:依赖配置新增okhttp。
v1.2.7 ruansen 2020-03-20 1.修复已知信息流广告bug;
2.支持同时显示多个信息流广告;
v1.2.8 ruansen 2020-04-26 1.远程统计组件更新;
v1.3.0 ruansen 2020-05-08 1.增加统计平台开关以及设置统计计划特性;
2.统计平台一律只从本地配置中读取。
v1.3.1 ruansen 2020-05-14 1.插屏广告支持模板渲染;
v1.4.7 ruansen 2020-09-02 1.安卓增加广点通激励视频广告类型;
2.第三方统计SDK更新到9.1.3;
3.远程统计组件更新;

一、概述

本 SDK 适用于对接中国区内的广告变现平台,通过简单流程即可同时集成高价值广告平台、统计分析工具等,提升接入效率、减少维护成本。

二、准备工作

  1. 下载 HippoSDK 的 Hippo_SDK.zip 压缩包:

hippo-sdk-cn-v1.4.7.zip

  1. 与河马运营人员获取如下配置文件:

hippo-ads-config.json,该json文件包含了广告相关的各种信息,请不要随便修改。

  1. 其中 Hippo-SDK 中已接入了友盟国内版SDK,若之前已经接过友盟,且有jar包冲突,请删除自己接入的友盟统计中的 umeng-analytics-xxx.jar 和 umeng-common-xxx.jar 文件;Hippo-SDK 中还接入了阿里云移动数据分析SDK,若之前已经接过该SDK,且有jar包冲突,请删除自己接入的阿里云移动数据分析SDK中的 alicloud-android-sdk-beacon-xxx.jar 、 alicloud-android-ut-xxx.jar、alicloud-android-utils-xxx.jar和alicloud-android-utdid-xxx.jar 文件。

三、接入步骤

  1. 导入HippoSDK的aar包;

将下载的所有aar包导入到Android项目中,并添加依赖;

  1. 导入SDK配置文件

将hippo-ads-config.json文件导入到Android工程的以下目录中(assets文件夹不存在时请自行创建,json文件名称请不要随意修改):

src/main/assets/hippo-ads-config.json

  1. AndroidManifest文件需要添加如下代码:
  1. <application
  2. ...
  3. android:usesCleartextTraffic="true"
  4. ....
  5. </application>
  1. 配置应用的build.gradle,添加必要的依赖(请根据实际版本号修改):
  1. dependencies {
  2. implementation fileTree(include: ['*.jar'], dir: 'libs')
  3. implementation 'com.android.support:appcompat-v7:28.0.0'
  4. implementation 'com.android.support:cardview-v7:28.0.0'
  5. implementation 'com.android.support.constraint:constraint-layout:1.1.3'
  6. implementation 'com.android.support:support-v4:28.0.0'
  7. //准备要支持安卓手机5.x以下的,可以用okhttp:3.12.8。
  8. implementation 'com.squareup.okhttp3:okhttp:3.12.8'
  9. //准备要支持是5.x以上的建议okhttp:4.3.1。
  10. implementation 'com.squareup.okhttp3:okhttp:4.3.1'
  11. // 广告相关依赖
  12. implementation(name: 'hippo-ad-sdk-v1.2.1', ext: 'aar')
  13. implementation(name: 'bdtracker-3.3.4-alpha.1-pangolin', ext: 'aar')
  14. implementation(name: 'open_ad_sdk-v2.1.0.3', ext: 'aar')
  15. implementation(name: 'android-gif-drawable-1.2.6', ext: 'aar')
  16. implementation(name: 'GameSdk-v102', ext: 'aar')
  17. implementation(name: 'aweme-open-sdk', ext: 'aar')
  18. implementation(name: 'alicloud-android-man-1.2.4',ext: 'aar')
  19. implementation(name: 'hippo-remote-analytics-v1.0.0',ext: 'aar')
  20. implementation(name: 'hippo-unique-id-v1.0',ext: 'aar')
  21. //友盟统计(如果找不到友盟统计的相关类,可以按照以下方式依赖)
  22. implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs/umeng-sdk')
  23. //implementation(name: 'hippo-recorder-sdk-v1.0.8', ext: 'aar') // 录屏功能sdk(可选)
  24. //implementation(name: 'xiaomi-sdk-v1.0', ext: 'aar') // 小米广告sdk(可选)
  25. }

四、SDK使用说明

Hippo-Ad-SDK

1. 初始化SDK


// (可选)需要服务器校验激励视频广告奖励回调时必须调用,不需要服务器校验时注释;
HippoAdSdk.setUserId("123");
// (可选)开启服务器校验激励视频广告奖励回调机制,不需要服务器校验时注释;
HippoAdSdk.setShouldVerifyRewarded();
// 使用本地广告配置,需要服务器下发广告配置时注释;
//HippoAdSdk.setJsonConfigFromLocal();
// 打开调试日志,上线时注释
HippoAdSdk.openDebugLog();
// 初始化广告
HippoAdSdk.init(this, new IHippoSDKInitListener() {
            @Override
            public void onFailure(int i, String s) {
                Log.d("hippo_sdk", "HippiSDK 初始化失败:errorCode=" + i + ", errorMessage:" + s);
            }

            @Override
            public void onSuccess() {
                Log.d("hippo_sdk", "HippiSDK 初始化成功");

            }
        });

2. 设置广告的监听事件

HippoAdSdk.setAdsListener(new HippoAdsListener());

public class HippoAdsListener implements IAdsListener {
        @Override
        public void hippoAdsLoaded(String hippoAdsId, String adsType) {
            Log.d("hippo_sdk", "MainActivity adsType:" + adsType + " 加载成功");
        }

        @Override
        public void hippoAdsShown(String hippoAdsId, String adsType) {
            Log.d("hippo_sdk", "MainActivity adsType:" + adsType + " 展示成功");
        }

        @Override
        public void hippoAdsClicked(String hippoAdsId, String adsType) {
            Log.d("hippo_sdk", "MainActivity adsType:" + adsType + " 点击成功");
        }

        @Override
        public void hippoAdsClosed(String hippoAdsId, String adsType, String extraJson) {
            Log.d("hippo_sdk", "MainActivity adsType:" + adsType + " 关闭成功");
        }

        @Override
        public void hippoAdsVideoComplete(String hippoAdsId, String adsType, String extraJson) {
            Log.d("hippo_sdk", "MainActivity adsType:" + adsType + " 奖励");
        }

        @Override
        public void hippoAdsError(String hippoAdsId, String adsType, int code, String message) {
            Log.d("hippo_sdk", "MainActivity adsType:" + adsType + " 加载失败 errCode:" + code + ", message:" + message);
        }
    }

3. 填充广告

// 加载激励视频广告
HippoAdSdk.loadRewardVideoAds(string adUnitId);

// 加载全屏视频广告
HippoAdSdk.loadFullScreenVideoAds(string adUnitId);

// 多态加载横幅广告
// 第一种方法:json配置控制banner高度
HippoAdSdk.loadBannerAds(String hippoAdsId);
// 第二种方法:横幅广告可支持的多种尺寸比例:600*300,600*400,600*500,600*260,600*90,600*150,640*100,690*388
HippoAdSdk.loadBannerAds(String hippoAdsId, int width, int height);

// 加载插页广告
HippoAdSdk.loadInterstitialAds(String hippoAdsId);

//加载信息流广告
NativeExpressStyle style = new NativeExpressStyle();
style.setRadius(20);
HippoAdSdk.loadNativeExpressAd(String hippoAdsId, int width, int height, NativeExpressStyle style);

//加载并展示开屏广告
HippoAdSdk.loadAndShowSplashAd(String hippoAdsId);

注意:使用时只需要首次加载一次,填充的广告一旦被展示后,会自动重新填充,无需多次调用加载的方法;

4. 展示广告

// 在展示前最好先判断是否有广告填充
HippoAdSDK.isLoaded( string adUnitId );

// 展示激励视频广告
HippoAdSdk.showRewardVideoAds(string adUnitId, Context context);

// 展示全屏视频广告
HippoAdSdk.showFullScreenVideoAds(string adUnitId, Context context);

// 展示横幅广告
// 目前只支持顶部(BannerPosition.TOP)、底部(BannerPosition.BOTTOM)展示
HippoAdSdk.showBannerAds(Activity context, String adUnitId, BannerPosition position);

// 展示插页广告
HippoAdSdk.showInterstitialAds(String hippoAdsId, Activity context);

//设置信息流广告位置
HippoAdSdk.setNativeExpressPosition(String hippoAdsId, int x, int y);

//展示信息流广告
HippoAdSdk.showNativeExpressAd(String hippoAdsId, Activity context);

//隐藏信息流广告
HippoAdSdk.hideNativeExpressAd();

5. 数据统计(必须)

需要在每个Activity相应生命周期方法中调用我们相对应的API,在Activity的onResume()中调用 HippoAdSdk.onAppResume(activity),在Activity的onPause()中调用HippoAdSdk.onAppPause(activity);若未使 用Android的原生开发,则在进入/退出每一个页面的位置调用相应函数,示例如下:

public class MainActivity extends AppCompatActivity {
…………
@Override
    protected void onResume() {
        super.onResume();
        HippoAdSdk.onAppResume(this);
    }

@Override
    protected void onPause() {
        super.onPause();
        HippoAdSdk.onAppPause(this);
    }
…………
}

6. 自定义事件

本SDK统计的自定义事件,调用方法如下:

/**
* context:上下文
*    event:事件名称
*    map:包含上报的事件属性 
*/
HippoReport.sendCustomEvent(Context context, String event, Map<String, String> map)

7. 统计平台开关(可选)


// 统计平台开关
// plateform: 统计平台,该常量可在ConstantConfig里面查找相关平台,如:ConstantConfig.ANALYTICS_PLATFORM_UMENG。
// isEnable: true为开启,false为关闭。
// 注:如果使用该功能,请在初始化之前调用。
HippoAdSdk.enableAnalyticsPlatform(String platform, boolean isEnable);

Hippo-Recorder-SDK(可选)

1. 初始化录屏SDK

HippoAdSdk.initRecorder(this, new IRecordListener() {
            @Override
            public void onEveryplayShown() {

            }

            @Override
            public void onEveryplayHidden() {

            }

            @Override
            public void onEveryplayReadyForRecording(int resultCode) {
                            // 当resultCode为1时表示可以进行录制
            }

            @Override
            public void onEveryplayRecordingStarted() {
                            // 开始录屏
            }

            @Override
            public void onEveryplayRecordingStopped() {
                            // 停止录屏
            }

            @Override
            public void onEveryplayThumbnailReadyAtTextureId(int i, int i1) {

            }

            @Override
            public void onFileReady(String videoPath) {
                // 录屏停止时返回录制的视频路径
            }
        });

2. 开始和停止录屏

// 开始录屏
HippoAdSdk.startRecorder();

// 停止录屏
HippoAdSdk.stopRecorder();

Hippo-Share-SDK(可选)

1. 调用方法

// 检查是否支持某平台分享
HippoAdSdk.isSupported(Context context, SharePlatform platform);

// 设置分享内容
ShareContentInfo shareContentInfo = new ShareContentInfo();
// 设置分享视频文件的路径
shareContentInfo.setFilePath(mRecordVideoPath);
/**
    * SharePlatform: 分享的平台
  * ShareType: 分享的内容类型
  * ShareContentInfo: 分享内容
  * shareHandler: 与回调相关(需要setBackClassName设置分享回来的界面的Activity(包名下)的全路径,setListener设置回调)
  */
HippoAdSdk.share(Activity activity, SharePlatform platform, ShareType type, ShareContentInfo shareContentInfo, HPShareHandler shareHandler);

五、混淆

本SDK未设置混淆,如若接入的项目中开启了混淆,请将如下代码配置到混淆文件中:

# hippo-sdk(必选)
-keep class com.hippo.ads.**{*;}
-keep class com.hippo.ads.**
-dontwarn com.hippo.ads.**
-keeppackagenames com.hippo.ads.**

# jrtt-sdk(必选)
-keep class com.bytedance.sdk.openadsdk.** { *; }
-keep public interface com.bytedance.sdk.openadsdk.downloadnew.** {*;}
-keep class com.androidquery.** {*;}
-keep class com.androidquery.**
-dontwarn com.androidquery.**
-keeppackagenames com.androidquery.**
-keep class com.ss.android.**{*;}
-keep class com.ss.android.**
-dontwarn com.ss.android.**
-keeppackagenames com.ss.android.**

# umeng-sdk(必选)
-keep class com.umeng.** {*;}
-keep class com.uc.** {*;}
-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-keep class com.zui.** {*;}
-keep class com.miui.** {*;}
-keep class com.heytap.** {*;}
-keep class a.** {*;}
-keep class com.vivo.** {*;}

# recorder-sdk(接入必选)
-keep class com.everyplay.Everyplay.**{*;}
-keep class com.everyplay.Everyplay.**
-dontwarn com.everyplay.Everyplay.**
-keeppackagenames com.everyplay.Everyplay.**

六、问题

1. 如若报以下某方法找不到等错误,请进行如下配置:

微信图片_20190428163926.png

需要在build.gradle中配置两个地方:

  • 配置合并方式

    android {
      ...
      defaultConfig {
          ...
          multiDexEnabled true
          ...
      }
      ...
    }
    
  • 添加依赖

    implementation 'com.android.support:appcompat-v7:28.0.0'