Skip to content

接入文档

对接流程

DANGER

SDK接入完毕后请发送二维码到对接群,测试验收通过后再提审发布!!!

接入准备

域名加白

接入前请检查下述域名是否已加进域名配置白名单,配置项有request合法域名、socket合法域名、uploadFile合法域名、downloadFile合法域名等(根据具体使用到那些域名项进行配置,也可以通配)。

C#
https://yyx.vigame.cn
https://c.vigame.cn
https://p.vigame.cn
https://u.vigame.cn
https://x.vigame.cn
https://a.vigame.cn 
https://x.vimedia.cn
https://r.vigame.cn
https://dnwx-res.oss-cn-shenzhen.aliyuncs.com //oss上传地址 需加在uploadFile合法域名内
https://backend.gravity-engine.com //引力引擎域名
https://api.datanexus.qq.com // 腾讯sdk

配置登录参数以及支付回调参数

联系运营同学配置

动能参数

联系运营同学提供

H5动能内部appid
H5动能内部appKey

广告位配置

联系运营同学配置

游戏的广告位埋点

接入步骤与常用接口

将下载好的dnsdk.js文件放入游戏脚本目录下

javascript
import './dnsdk.js'

js_load事件上报(微信小游戏必接)

DANGER

小游戏工程目录下添加dnsdk-config.js文件,game.js文件中引入!!!

javascript
require('dnsdk-config.js');

dnsdk-config.js内容如下

javascript
var GameGlobal = window.GameGlobal || {};
window.GameGlobal = GameGlobal;
GameGlobal.DnsdkConfig = {};
GameGlobal.DnsdkConfig.appid = '动能appId';

示例截图

初始化(必接)

DANGER

初始化后才可调用sdk其他接口,建议收到初始化回调后进行各种逻辑处理!

1. 原生初始化方式
javascript
/**
 * sdk初始化
 * @param 初始化参数,object类型
 */
dnsdk.nativeInit = function (obj)

参数说明

属性类型默认值必填说明
appIdstring动能appid
appKeystring动能appkey
offerIdstring""米大师侧申请的应用ID
cloudEnvstring""云环境 ID
payRatenumber10支付比例,小游戏平台配置支付时设置的比例(1:1、1:10、1:100)
gravityEngineTokenstring""引力引擎 token
callBackfunction初始化回调

初始化示例

javascript
let obj = {
    appId: '动能appId',
    appKey: '动能appKey',
    callBack: function (ret, openid, usercode) {
        if (ret) {
            console.log('dnsdk初始化成功 openId = ' + openid + ', userCode = ' + usercode);
        } else {
            console.log('dnsdk初始化失败');
        }
    }
};
dnsdk.nativeInit(obj);
2. 引力归因初始化方式

将gravityengine.mg.wx.min.js引力sdk放到dnsdk.js同级目录下。

javascript
/**
 * sdk初始化
 * @param 初始化参数,object类型
 */
dnsdk.attriInit = function (obj)

参数说明

属性类型默认值必填说明
appIdstring动能appid
appKeystring动能appkey
offerIdstring""米大师侧申请的应用ID
cloudEnvstring""云环境 ID
payRatenumber10支付比例,小游戏平台配置支付时设置的比例(1:1、1:10、1:100)
gravityEngineTokenstring""引力引擎 token 不设置不上报引力
tencentSdkDatastring""腾讯sdk参数,不设置不上报腾讯
callBackfunction初始化回调
javascript
let tencentSdkData = {
    user_action_set_id: 100001, // 数据源ID,数字
    secret_key: "5e853xxxxxxd57a690xxxxxxxxxx", // 加密key,必填
    silentPeriod: 30 // 当前产品定义的沉默唤起周期天数,选填,用户沉默超过天数之后,将给腾讯SDK回传一个沉默唤起(RE_ACTIVE)事件,如果不填该参数,则无论用户沉默多久,都不会回传沉默唤起(RE_ACTIVE)
};
let obj = {
    appId: '动能appId',
    appKey: '动能appKey',
    gravityEngineToken: '引力引擎 token',
    tencentSdkData: JSON.stringify(tencentSdkData), // 腾讯sdk参数
    callBack: function (ret, openid, usercode) {
        if (ret) {
            console.log('dnsdk初始化成功 openId = ' + openid + ', userCode = ' + usercode);
        } else {
            console.log('dnsdk初始化失败');
        }
    }
};
dnsdk.attriInit(obj);

统计(必接)

1.1 自定义事件(必接)

其他自定义事件可以使用该接口上报

javascript
/**
 * 自定义事件上报
 * @param eventId 事件名称
 * @param data 上报数据object类型
 */
dnsdk.dnCommonFunc.tjSendCustomEvent(eventId, data);

参数说明

属性类型默认值必填说明
eventIdstring事件ID
dataobject上报数据

使用示例

javascript
dnsdk.dnCommonFunc.tjSendCustomEvent('eventId', {key1: 'value1', key2: 'value2'});
1.1.1 启动流程上报(必接)
事件定义事件ID上报方触发时机data
游戏loading页面(必接)app_loading_show游戏实现上报逻辑游戏引擎初始化后就触发上报非必填
游戏内首页(必接)app_home_show游戏实现上报逻辑主页展示时非必填

使用示例

javascript
dnsdk.dnCommonFunc.tjSendCustomEvent("app_loading_show");
dnsdk.dnCommonFunc.tjSendCustomEvent("app_home_show");
1.2 转化行为上报(必接)

IMPORTANT

必须使用 tjSendTrackingEvent 接口才可以上报回传参数,事件类型为tracking

javascript
/**
 * 转化行为上报
 * @param eventId 事件名称
 * @param data 上报数据object类型
 */
dnsdk.dnCommonFunc.tjSendTrackingEvent(eventId, data);
事件定义事件ID上报方触发时机data
激活(必接)active游戏实现上报逻辑首次进入主页触发非必填
注册(必接)active_register游戏实现上报逻辑完成角色创建后触发。如果没有角色创建过程,可跟active事件同时触发。非必填
次留(必接)next_day_open游戏实现上报逻辑用户激活后次日(第二个自然日)在互联网环境下打开微信小游戏非必填

使用示例

javascript
dnsdk.dnCommonFunc.tjSendTrackingEvent("active");
dnsdk.dnCommonFunc.tjSendTrackingEvent("active_register");
dnsdk.dnCommonFunc.tjSendTrackingEvent("next_day_open");
1.3 关卡统计上报(必接)

IMPORTANT

必须使用 tjSendLevelEvent 接口上报,事件名称为 begin、complete、fail。

1.3.1 关卡开始
javascript
// 关卡开始
var data = {
    levelid: level //关卡id
}
dnsdk.dnCommonFunc.tjSendLevelEvent("begin", data);
1.3.2 关卡获胜
javascript
// 关卡获胜
var data = {
    levelid: level, //关卡id
    score: score //关卡得分
}
dnsdk.dnCommonFunc.tjSendLevelEvent("complete", data);
1.3.3 关卡失败
javascript
// 关卡失败
var data = {
    levelid: level, //关卡id
    score: score //关卡得分
}
dnsdk.dnCommonFunc.tjSendLevelEvent("fail", data);

广告(必接)

1.1 打开广告
javascript
/**
 * 打开广告
 * @param {广告位名称} pos 
 * @param {自定义style} diyStyle 
 * @param {回调} callBack
 */
dnsdk.adManager.openAd = function (pos, diyStyle = "", callBack)

使用示例

javascript
// 打开激励视频广告
dnsdk.adManager.openAd("动能提供的激励视频广告位", "", (ret, data) => {
      console.log('打开视频广告 data = ' + JSON.stringify(data));
      if (ret == 0) {
        console.log("打开成功");
      } else {
        console.log("打开失败");
      }
});

// 打开插屏广告
dnsdk.adManager.openAd("动能提供的激励视频广告位", "", (ret, data) => {
      console.log('打开插屏广告 data = ' + JSON.stringify(data));
      if (ret == 0) {
        console.log("打开成功");
      } else {
        console.log("打开失败");
      }
});

// 打开banner广告
dnsdk.adManager.openAd("banner");
1.2 广告是否缓存好
javascript
/**
 * 广告是否已缓存
 * @param {广告位名称} adPos
 * @returns ture已缓存;false未缓存
 */
dnsdk.adManager.isAdReady = function (adPos)
1.3 某关卡是否可以打开该广告
javascript
/**
 * 某关卡是否可以打开该广告
 * @param {广告位名称} adPos
 * @param {关卡id} level 
 * @returns ture可以;false不可以
 */
dnsdk.adManager.isAdBeOpenInLevel = function (adPos, level)
1.4 关闭广告
javascript
/**
 * 关闭 banner 广告
 * @param {广告位名称} adPos
 */
dnsdk.adManager.closeAd = function (adPos)

支付(选接)

1.1 支付
javascript
/**
 * 支付
 * @param {int} ver 支付版本1或2,新申请的游戏填写2
 * @param {string} params 支付参数
 * @param {function} callBack 支付回调
 */
dnsdk.pay.miniPay = function (ver, params, callBack)

IMPORTANT

iOS支付payDesc参数需按下面的方式拼接,否则会报支付参数错误。自定义数据可以#拼接在payDesc后面。 "商品描述#https://yyx.vigame.cn/PayPicture/small.png#等待客服发送充值链接#https://yyx.vigame.cn/PayPicture/big.png"

使用示例

javascript
let params = {
    id: "计费点id",
    price: "充值金额单位分",
    payDesc: "商品描述(注意iOS传参)",
    giftId: "礼包id没有使用计费点id",
    giftType: "礼包类型(选填)",
    levelId: "等级(选填)",
    tokenType: "代币类型(选填)",
    payPush: "礼包推送:1主动点击;0被动推送(选填)",
    userId: "用户id(选填)",
    custom: "自定义透传数据(选填)Android使用该字段,iOS使用#拼接在payDesc后面"
}

// id-计费点id orderId-订单号
dnsdk.pay.miniPay(2, params, (isSuccess, id, custom, orderId) => {
    if(isSuccess) {
        console.log("pay success");
        // 上报充值到账事件
        dnsdk.pay.payOnAccount(orderId);
        // 上报代币变化事件pay_token_change
    } else {
        console.log("pay fail");
    }
});
1.2 补单

非服务器发奖调用。

javascript
/**
 * 补单
 * @param {function} callBack 回调
 */
dnsdk.pay.setInventoryCallBack = function (callBack)

使用示例

javascript
// id-计费点id orderId-订单号
dnsdk.pay.setInventoryCallBack((isSuccess, id, custom, orderId) => {
    if(isSuccess) {
        console.log("pay success");
        // 上报充值到账事件
        dnsdk.pay.payOnAccount(orderId);
        // 上报代币变化事件pay_token_change
    } else {
        console.log("pay fail");
    }
});
1.3 充值到账上报

非服务器发奖的游戏需调用该接口上报事件,在游戏充值成功发奖时调用。

javascript
/**
 * 充值到账上报
 * @param {string} orderId 订单id
 */
dnsdk.pay.payOnAccount = function (orderId)

使用示例

javascript
dnsdk.pay.payOnAccount("订单号");
2.1 服务端发奖

pdf文档接入时提供

用户数值由服务器统一管理的游戏,可直接由游戏服务器接收支付结果和发奖,可从根本上解决掉单的问题。 推荐的对接流程如下:

2.2 支付回调

参考:2.CP支付回调对接.pdf

2.3 消费订单

参考:1.CP服务端订单销单协议-V2版本.pdf(消费订单)

2.4 查询订单

参考:1.CP服务端订单销单协议-V2版本.pdf(查询订单)

分享(选接)

IMPORTANT

微信小游戏需调用 showShareMenu 接口,否则分享按钮不显示。

1.1 主动分享

分享接口调用后,不再返回用户是否分享完成事件

javascript
/**
 * 主动分享
 * @param {动能提供的分享参数} shareName
 * @param {自定义数据使用'&'拼接} userData
 * @param {抖音参数,微信无效} shareType
 */
dnsdk.core.shareAppMessage = function (shareName, userData, shareType, callBack)

使用示例

javascript
dnsdk.core.shareAppMessage("动能提供的分享参数""t1=1&t2=2", "", (ret, data) => {
    if(ret) {
        //微信无法监听用户是否真正的分享
        console.log("分享接口调用成功");
    } else {
        console.log("分享接口调用失败");
    }
});
1.2 点击右上角分享

点击右上角"..."进行分享触发,前提是要先主动调用设置分享监听OnShareAppMessage,触发右上角分享时才会调用下面的设置。

javascript
/**
 * 右上角分享
 * @param {动能提供的分享参数} shareName
 * @param {自定义数据使用'&'拼接} userData
 */
dnsdk.core.onShareAppMessage = function (shareName, userData)

使用示例

javascript
dnsdk.core.onShareAppMessage ("动能提供的分享参数", "t1=1&t2=2");