Skip to content

指色Android聚合SDK接入文档

该SDK已被废弃,请查看SeegSdk接入

版本记录

版本号修改时间修改内容支持
2.5.0.12022-07-21优化授权
1.6.0.22021-06-22添加TradPlus支持
1.5.0.122021-05-24添加apk更新
1.4.5.02021-04-01SDK优化
1.3.12021-02-25优化SDK初始化
1.3.02021-01-28更新第三方SDK
1.2.12020-12-17添加巨量分包功能
1.2.02020-11-6优化功能
1.1.32020-09-30修复bug
1.1.02020-06-09优化接入步骤
1.0.92020-06-04优化MTA接入方式
1.0.72020-06-01对外正式版

SDK接入

集成准备

添加依赖

  工程的build.gradle

allprojects {
    repositories {
        google()
        jcenter()
        flatDir {
            dirs 'libs'
        }
        maven {
            url "http://zsapp.zxmn2018.com/maven/repository/maven-public/"
        }
    }
}

  项目的build.gradle

implementation 'com.zhise:zs-sdk:2.5.0.1'
implementation 'com.android.support:appcompat-v7:28.0.0' // 本SDK依赖android-support库

  将.aar文件[请联系平台商获取]添加到工程的lib目录中

  • 本SDK暂不支持androidx, 因此API需指定为28

指定指令集

  本SDK支持常见的5种指令集:armeabi -v7a、arm64-v8a、x86、x86_64
  如果项目支持的架构不一致,则需指定

ndk {
    abiFilters 'armeabi-v7a', 'arm64-v8a'
}

添加参数

  在项目的build.gradle的defaultConfig中添加CP提供的参数

manifestPlaceholders = [
        ZS_APP_ID        : "",
        ZS_APP_SECRET    : "",
        ZS_APP_CHANNEL   : ""
]
  • ZS_APP_ID与ZS_APP_CHANNEL为必传参数
  • ZS_APP_SECRET暂时没有使用到,但后期可能会有影响,请传入
  • 如果构建错误,可以添加
multiDexEnabled true

添加JavaScript脚本和回调

脚本类游戏需添加JavaScript脚本

添加JavaScript脚本
  • CocosCreator:scripts/zs-ccc.js
  • laya:scripts/zs-laya.js
  • h5:scripts/zs-web.js (暂未接入)

  例如cocos需在main.js中添加

    // ...
    if (isRuntime) {
        require('src/settings.js');
        require('src/cocos2d-runtime.js');
        if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) {
            require('src/physics.js');
        }
        require('jsb-adapter/engine/index.js');
    } else {
        require('src/settings.js');
        require('src/cocos2d-jsb.js');
        if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) {
            require('src/physics.js');
        }
        require('jsb-adapter/jsb-engine.js');
    }
    // 添加脚本文件
    require('scripts/zs-ccc.js');
    // ...
添加回调
// 添加JS监听
void onJSEvent(JSEvalCallback callback);
// 取消JS监听
void offJSEvent(JSEvalCallback callback);

  以CocosCreator为例

    ZSSdk.onJSEvent(new JSEvalCallback() {
        @Override
        public void onCallJS(final String jsCode) {
            runOnGLThread(new Runnable() {
                @Override
                public void run() {
                    Cocos2dxJavascriptJavaBridge.evalString(jsCode);
                }
            });
        }
    });

SDK初始化

初始化SDK

  在Application或Activity的onCreate中调用初始化方法。

void initSdk(Application application, ZSConfig config);

  完整Application代码

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ZSConfig config = new ZSConfig.Builder()
                .debug(true)
                .build();
        ZSSdk.initSdk(this, config);
    }
}
  • 请尽早调用该方法
  • 调试模式时,可以设置debug为true
  • 请注意Application是否在manifest中注册

上报授权时机

  请在授权后调用(如果游戏无需授权,则直接调用该方法,不授权可能影响统计效果)

ZSSdk.afterPermission();
  • 请务必保证该方法被调用

第三方SDK调用

  1. 广点通
  • 因为广点通初始化的限制,无法集成在SDK中,需要CP自行调用,在ApplicationonCreate中调用
 GDTAction.init(this, gdtActionSetId, gdtSetKey, channel);
  • 务必注意,必须在Application的onCreate中调用
  • chanel不能含特殊字符及中文等

添加开屏

    ZUSplashAd splashAd;
    // 创建开屏
    DisplayMetrics dm = new DisplayMetrics();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        getWindowManager().getDefaultDisplay().getRealMetrics(dm);
    }
    DisplayMetrics dm = new DisplayMetrics();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        getWindowManager().getDefaultDisplay().getRealMetrics(dm);
    }
    splashAd = ZUSdk.createSplashAd(activity, new ZUAdSlot.Builder()
        .setAdUnitId("")
        .setWidth(dm.widthPixels)
        .setHeight(dm.heightPixels)
        .build());
    // 加载开屏
    splashAd.load(new ZUSplashAd.ZUSplashAdLoadListener() {
        @Override
        public void onSplashAdLoadSuccess() {
            // 这里调用显示开屏
        }

        @Override
        public void onSplashAdLoadError(int errCode, String errMsg) {
        }
    });
    // 显示开屏
    splashAd.show(adContainer, new ZUSplashAd.ZUSplashAdListener() {
        @Override
        public void onSplashAdShow(ZUAdInfo adInfo) {

        }

        @Override
        public void onSplashAdShowError(int errCode, String errMsg) {

        }

        @Override
        public void onSplashAdClose() {
        }
    });

JAVA-API

DMP

ZDSdk.registerEvent

  1. 方法
ZDSdk.registerEvent(String pf, String userId, boolean isSuccess);
  1. 参数
属性类型默认值必填说明
pfstring登陆平台默认zhise
userIdstring用户id
isSuccessboolean是否成功必须成功一次
  1. 调用要求

必须调用,如果游戏不需要注册,可以第一次进入游戏时调用

ZDSdk.loginEvent

  1. 方法
ZDSdk.loginEvent(String pf, String userId, boolean isSuccess);
  1. 参数
属性类型默认值必填说明
pfstring登陆平台默认zhise
userIdstring用户id
isSuccessboolean是否成功必须成功一次
  1. 调用要求

必须上报,如果游戏不需要登录,可以在用户进入游戏时调用

ZDSdk.payEvent

  1. 方法
ZDSdk.payEvent(String contentType, String contentName, String contentId, int contentNumber, String paymentChannel, String currency, boolean isSuccess, int currencyAmount)
  1. 参数
属性类型默认值必填说明
userIdstring用户id
contentTypestring""
contentNamestring""
contentIdstring""
contentNumbernumber1
paymentChannelstringzs
currencystringRMB
isSuccessbooleantrue支付状态。
currencyAmountnumber1支付金额,单位分。
  1. 调用要求

必须上报,如果没有支付事件,请用其它事件(比如激励完成)代替

SAS

ZTSdk.onPageStart

  1. 方法
ZTSdk.onPageStart(Context context, String pageName);

ZTSdk.onPageEnd

  1. 方法
ZTSdk.onPageEnd(Context context, String pageName);

ZTSdk.onEvent

  1. 方法
ZTSdk.onPageEnd(Context context, String eventId, String json);

横幅广告

  1. 示例
    ZUBannerAd bannerAd;
    // 创建横幅
    bannerAd = ZUSdk.createBannerAd(activity, ZUAdSlot.Builder()
            .setAdUnitId(adUnitId)
            .setIntervals(adIntervals)
            .setWidth(width)
            .setHeight(height)
            .build());
    // 加载横幅
    bannerAd.load(new ZUBannerAd.ZUBannerAdLoadListener() {
        @Override
        public void onBannerAdLoadSuccess() {
            // 这里可以调用显示横幅
        }

        @Override
        public void onBannerAdLoadError(int errCode, String errMsg) {
        }
    });
    // 显示横幅
    bannerAd.show(adContainer, new ZUBannerAd.ZUBannerAdListener() {
        @Override
        public void onBannerAdShow(ZUAdInfo adInfo) {

        }

        @Override
        public void onBannerAdShowError(int errCode, String errMsg) {

        }
    });

插屏广告

  1. 示例
    ZUInterstitialAd interstitialAd;
    // 创建插屏
    interstitialAd = ZUSdk.createInterstitialAd(activity, ZUAdSlot.Builder()
            .setAdUnitId(adUnitId)
            .build());
    // 加载插屏
    interstitialAd.load(new ZUInterstitialAd.ZUInterstitialAdLoadListener() {
        @Override
        public void onInterstitialAdLoadSuccess() {
            // 这里可以调用显示插屏
        }

        @Override
        public void onInterstitialAdLoadError(int errCode, String errMsg) {
        }
    });
    // 显示插屏
    interstitialAd.show(activity, new ZUInterstitialAd.ZUInterstitialAdListener() {
        @Override
        public void onInterstitialAdShow(ZUAdInfo adInfo) {

        }

        @Override
        public void onInterstitialAdShowError(int errCode, String errMsg) {

        }

        @Override
        public void onInterstitialAdClose() {

        }
    });

激励广告

  1. 示例
    ZURewardedVideoAd rewardedVideoAd;
    // 创建激励
    rewardedVideoAd = ZUSdk.createRewardedVideoAd(activity, ZUAdSlot.Builder()
            .setAdUnitId(adUnitId)
            .setUserId(userId)
            .build());
    // 加载激励
    rewardedVideoAd.load(new ZURewardedVideoAd.ZURewardedVideoAdLoadListener() {
        @Override
        public void onRewardedVideoAdLoadSuccess() {
            // 这里可以调用显示激励
        }

        @Override
        public void onRewardedVideoAdLoadError(int errCode, String errMsg) {
        }
    });
    // 显示激励
    rewardedVideoAd.show(activity, new ZURewardedVideoAd.ZURewardedVideoAdListener() {
        @Override
        public void onRewardedVideoAdShow(ZUAdInfo adInfo) {

        }

        @Override
        public void onRewardedVideoAdShowError(int errCode, String errMsg) {

        }

        @Override
        public void onRewardedVideoAdClose(boolean verify) {

        }

        @Override
        public void onRewardedVideoAdClick() {

        }
    });

信息流

  1. 示例(待完善)

微信登录

参考微信文档接入,不需要开发者额外导入微信包

JS-API

APP

zs.gameLoadResult

游戏加载完成

  1. 方法
zs.gameLoadResult();
  1. 参数

  2. 调用要求

推荐调用,用户进入游戏并可以操作游戏时

Ad

zs.createRewardedVideoAd

创建激励视频广告

  1. 方法
zs.createRewardedVideoAd(Object object);
  1. 参数

Object object

属性类型默认值必填说明
adUnitIdstring广告单元 id
multitonbooleanfalse是否启用多例模式,默认为false
  1. 返回值
类型说明
RewardedVideoAd激励视频广告组件,如果发生错误,有概率返回空
  1. 调用要求

激励视频加载时间较长,推荐进行预加载

zs.createInterstitialAd

创建插屏广告

  1. 方法
zs.createInterstitialAd(Object object);
  1. 参数

Object object

属性类型默认值必填说明
adUnitIdstring广告单元 id
  1. 返回值
类型说明
InterstitialAd插屏广告组件,如果发生错误,有概率返回空

zs.createBannerAd

创建横幅广告

  1. 方法
zs.createBannerAd(Object object);
  1. 参数

Object object

属性类型默认值必填说明
adUnitIdstring广告位id
adIntervalsnumber0广告自动刷新的间隔时间,单位为秒,参数值必须大于等于30(该参数不传入时 Banner 广告不会自动刷新)
styleObject广告的样式

object.style 的结构

属性类型必填说明
leftnumber广告的左上角横坐标
topnumber广告的左上角纵坐标
widthnumber广告的宽度
heightnumber广告的高度
  1. 返回值
类型说明
BannerAd横幅广告,如果发生错误,有概率返回空

zs.createNativeAd

创建原生广告

  1. 方法
zs.createNativeAd(Object object);
  1. 参数

Object object

属性类型默认值必填说明
adUnitIdstring广告位id
styleObject广告的样式
object.style 的结构
属性类型必填说明
leftnumber广告的左上角横坐标
topnumber广告的左上角纵坐标
widthnumber广告的宽度
heightnumber广告的高度
  1. 返回值
类型说明
NativeAd原生广告组件,如果发生错误,有概率返回空

上报相关

初始化

  1. 方法
javascript
zs.dmp.init(string appName, number loginType, number clientCode, callback:Function);

上报广告数据

  1. 方法
javascript
zs.dmp.reportAd(number ecpm);

进入游戏上报

  1. 方法
javascript
zs.dmp.enterGame(): string | null;

插屏事件上报

  1. 方法
javascript
zs.dmp.checkInterstitial(string name): string | null;

点击屏幕上报

  1. 方法
javascript
zs.dmp.checkOperation(boolean isTap): string | null;
  1. 调用时机

在玩家点击屏幕、移动屏幕时调用并传递为false,抬起手指时参数改为true

未操作检测

  1. 方法
javascript
zs.dmp.unCheckOperation():string |null;
  1. 调用时机

未播放广告时,每秒上报即可

微信

登录

  1. 方法
javascript
zs.authorize(Object object);
  1. 参数

Object object

属性类型默认值必填说明
scopestringwx权限类型
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)
  1. 说明

CP需自行创建包名.wxapi.WXEntryActivity并继承自ZSEntryActivity