1.0.5 • Published 6 years ago
dappbirds-lightgame-sdk v1.0.5
该文档的目的是让开发者可以快速接入 dappbirds-lightgame-sdk,主要包括以下内容:
- 相关环境介绍
- SDK 文件介绍及加载方式
- SDK 初始化
- SDK 关键方法描述
- 资源下载
相关环境描述
DApp运行环境
- Chrome 浏览器 (插件形式支撑)
- 钱包客户端中的DApp浏览器 (iOS + Android)
Demo 测试地址
注意:体验线上或线下 Demo,需要切换到钱包对应的网络(TEST_NET, MAIN_NET)
SDK 文件介绍及加载方式
SDK文件:
index.min.jsindex.htmlDemo 页面
加载方式:
- 将资源中的
index.min.js复制到项目中,通过 script 加载即可 - 或直接引入 DAppbirds 提供的 CDN URL加载
//dapp.cdn.static.mmzhuli.com/static/dappbirds-lightgame-sdk/index.min.js?t=1568794420 - 或通过 npm 引入
npm install dappbirds-lightgame-sdkimport { DappBirdsLightGameEngin } from 'dappbirds-lightgame-sdk'
- 将资源中的
SDK 初始化
- 引入 SDK js 文件
参考以下代码进行接入
const enginConfig = { chain_type: 7, test_mode: false }; DappBirdsLightGameEngin.init(enginConfig).then((DappBirdsLightGameSDK) => { const sdkConfig = { app_id: 1, contract_address: '', silent_login: 1, chain_sign_txt: '', invite_code: '', }; // theme 的全量配置在文档底部,可根据需求选择部分替换 const themeConfig = { dialog: {}, images: {}, } const lightGameInstance = DappBirdsLightGameSDK.init(sdkConfig, themeConfig); // TODO }).catch((ex) => { console.error(ex); });enginConfig 参数:
参数名 描述 是否必填 约束 chain_type 公链类型 是 本体:7,IOST:10,维基:12,BOS:9 test_mode 是否测试环境 否 默认为:false,测试时可置为 true 上线前需将 test_mode 参数设置为 false, 或删除此参数,切记!
sdkConfig 参数:
参数名 描述 是否必填 约束 app_id 应用app_id 是 由平台分配 contract_address 链上合约地址 是 由平台分配 silent_login 是否静默登录 否 静默登录, 设置1可以不验证签名登录 (须后台先配置参数) chain_sign_txt 签名字符串 否 链上签名时的字符串 invite_code 邀请码 否 邀请者的标识 themeConfig 参数:
参数名 描述 是否必填 约束 dialog 游戏弹框样式 否 可在文档底部查看全部配置 images 需要替换的图片素材 否 可在文档底部查看全部配置
SDK 关键方法描述
auth(config)用户授权isAuth()判断用户是否授权getUserInfo()获取用户信息,余额等getGameConfig()获取游戏配置,道具等postData(url, params)未封装的接口可用此方法buy(config)用户购买startGame()开始游戏事件saveScore(score, isEnd)上报分数revivalGame()游戏复活onMessage(type, callback)相关事件回调监听toast(message)展示提示startLoading(message), stopLoading()打开、关闭 LoadinggetTreasureBoxInfo()获取开宝箱状态,判断是否开过宝箱bashowTreasureBoxDialog(config)展示开宝箱弹框bashowWithdrawDialog()展示提现弹框bashowRankingDialog()展示排行榜弹框bashowSuppertDialog()展示客服弹框bashowExchangeCdkDialog()展示礼包兑换弹框bashowNormalDialog()展示自定义弹框
auth
const config = { flag_chain: 0 };
lightGameInstance.auth(config).then(authData => {
console.log(authData);
}).catch(ex => {
console.error(ex);
});config 参数:
| 参数名 | 描述 | 是否必填 | 约束 |
|---|---|---|---|
| flag_chain | 是否开启链上签名 | 否 | 默认不开启, 1:开启链上签名 |
isAuth
// 判断用户是否授权成功
const isAuth = lightGameInstance.isAuth();getUserInfo
// 获取用户信息及钱包余额信息
lightGameInstance.getUserInfo().then(userInfo => {
console.log(userInfo);
}).catch(ex => {
console.error(ex);
});;getGameConfig
// 获取游戏配置,道具等
lightGameInstance.getGameConfig().then(data => {
console.log(data);
}).catch(ex => {
console.error(ex);
});;postData
// 未封装的接口可用此方法
// url 不需要加域名,仅需要 path
lightGameInstance.postData(url, params).then(response => {
console.log(response);
}).catch(ex => {
console.error(ex);
});buy
// 下单支付
const config = {
product_no: 123123,
amount: 0.01,
number: 1
};
lightGameInstance.buy(config).then(balance => {
console.log(balance);
}).catch(ex => {
console.error(ex);
});config 参数:
| 参数名 | 描述 | 是否必填 | 约束 |
|---|---|---|---|
| product_no | 商品编号 | 是 | 需从 getGameConfig 获取 |
| amount | 商品价格 | 是 | 需从 getGameConfig 获取 |
| number | 购买数量 | 否 | 购买商品的数量 |
startGame
// 开始游戏事件
lightGameInstance.startGame().then(() => {
// 执行开始游戏逻辑
});saveScore
// 上报分数
const score = 10;
const isEnd = 0;
lightGameInstance.saveScore(score, isEnd).then((data) => {});参数:
| 参数名 | 描述 | 是否必填 | 约束 |
|---|---|---|---|
| score | 当前分数 | 是 | 当前的成绩 |
| isEnd | 是否结束 | 是 | 0: 未结束,1: 已结束 |
revivalGame
// 游戏复活逻辑,一半会需要在支付后调用此方法标识复活
lightGameInstance.revivalGame().then(() => {
// 游戏中可操作复活逻辑,然后用户继续玩
});onMessage
// 如果监听此方法,则不会调用 SDK 提供的 Toast
lightGameInstance.onMessage('toast', (data, extra) => {
console.log(data.message);
});
// 如果监听此方法,则不会调用 SDK 提供的 Loading
lightGameInstance.onMessage('loading', (data) => {
console.log(data);
if (data.close) {
// 关闭 Loading
} else {
// 打开 Loading
}
});
// 刷新用户余额,可在回调方法中调用 getUserInfo(), 刷新用户余额等信息
// 此回调会在用户提现成功后调用
lightGameInstance.onMessage('refreshWallet', () => {
console.log('refresh wallet');
});toast
// Toast 提示,如果不监听 onMessage 的 toast,则会调用 SDK 提供的
lightGameInstance.toast('提示');startLoading, stopLoading
// Loading 提示,如果不监听 onMessage 的 loading,则会调用 SDK 提供的
lightGameInstance.startLoading('加载中,请稍候...');
lightGameInstance.stopLoading();getTreasureBoxInfo
// 获取宝箱是否领取的标识
lightGameInstance.getTreasureBoxInfo().then((data) => {
console.log(data);
});bashowTreasureBoxDialog
// 展示开宝箱弹框
const config = {
boxType: 1,
onOpenedBox: (data) => {},
};
lightGameInstance.showTreasureBoxDialog(config);boxType 宝箱类型:
| 数值 | 描述 | 调用时机 |
|---|---|---|
| 1 | 不需要用户支付的随机宝箱 | 游戏前或游戏进行中 |
| 2 | 需要用户支付的随机宝箱 | 游戏前或游戏进行中 |
| 3 | 游戏结束后的幸运宝箱 | 游戏结束后 |
| 4 | 按通关数获取宝箱,需根据游戏配置返回的 extra.level_reward_dict | 游戏结束后 |
| 5 | 按成绩获取宝箱,需判断分数大于等于游戏配置返回的: data.base_param.limit_lucky_box_score | 游戏结束后 |
config 参数:
| 参数名 | 描述 | 是否必填 | 约束 |
|---|---|---|---|
| boxType | 宝箱类型 | 是 | 见宝箱类型列表 |
| onOpenedBox | 宝箱打开后的回调 | 否 | 回调参数包含宝箱内容 |
boxType: 2, config 的额外参数:
| 参数名 | 描述 | 是否必填 | 约束 |
|---|---|---|---|
| product_no | 商品编号 | 是 | 游戏配置中开宝箱的 product_no |
| amount | 支付金额 | 是 | 游戏配置中开宝箱的 amount |
boxType: 4, config 的额外参数:
| 参数名 | 描述 | 是否必填 | 约束 |
|---|---|---|---|
| level | 用户等级 | 是 | 当前用户等级 |
bashowWithdrawDialog
// 展示提现弹框
lightGameInstance.showWithdrawDialog();bashowRankingDialog
// 展示排行榜弹框
lightGameInstance.showRankingDialog();bashowSuppertDialog
// 展示客服弹框
lightGameInstance.showSuppertDialog();bashowExchangeCdkDialog
// 展示礼包兑换弹框
const config = {
onSuccess: (result) => {},
};
lightGameInstance.showExchangeCdkDialog(config);config 参数:
| 参数名 | 描述 | 是否必填 | 约束 |
|---|---|---|---|
| onSuccess | 礼包兑换完成的回调 | 是 | Function 类型 |
onSuccess 的 result 参数:
| 名称 | 类型 | 描述 |
|---|---|---|
| result.data | Array | 需要修改的道具列表 |
| result.dataindex.product_no | String | 道具编号 |
| result.dataindex.num | Number | 需要添加的道具数量 |
| result.dataindex.is_archive | Number | 是否在服务端存档,如果是1,则本地不需要操作道具,重新请求getGameConfig即可,否则需要操作本地道具 |
bashowNormalDialog
// 展示自定义弹框
let dialog = null;
const config = {
content: '<div>Hello World!</div>',
title: '自定义弹框',
buttons: [{
text: '主按钮',
click: ()=> {
dialog.hide();
console.log('主按钮点击');
}
}, {
text: '副按钮',
click: ()=> {
console.log('副按钮点击');
}
}]
};
dialog = lightGameInstance.showNormalDialog(config);config 参数:
| 参数名 | 描述 | 是否必填 | 约束 |
|---|---|---|---|
| title | 弹框标题 | 是 | 标题 |
| content | 弹框内容 | 是 | 支持 HTML 格式 |
| buttons | 按钮列表 | 否 | 可不填,支持1~2个按钮,前面的按钮为主色调按钮 |
dialog 返回值:
| 名称 | 描述 |
|---|---|
| hide | 隐藏弹框,dialog.hide() |
theme 全量配置
{
// 弹框样式
dialog: {
// 弹框边框颜色
dialogBorderColor: '#fd9334',
// 弹框背景颜色
backgroundColor: '#fff8e8',
// 弹框内普通文字颜色
textColor: '#fd9333',
// 文字效果加强颜色,目前输入框同样使用此颜色
textPrimaryColor: '#fc4254',
// 标题背景颜色
titleBackgroundColor: '#fcbf63',
// 标题字体颜色
titleColor: '#fff',
// 输入框背景颜色
inputBackgroundColor: '#fed78b',
// 按钮字体颜色
buttonTextColor: '#f25925',
// 按钮背景颜色
buttonBackgroundColor: '#feea35',
// 按钮内阴影颜色
buttonBoxShadowColor: 'rgba(253, 147, 51, .8)',
// 列表分割颜色,比如排行榜列表
listBorderColor: 'rgba(253, 147, 51, .2)',
},
// 弹框中用到的图片
images: {
// 关闭 icon 图标
closeIcon: '//jdgjimage-1251031594.image.myqcloud.com/13ba0ef9e799e87d8e00124ba3134294',
// 未打开宝箱的 icon
treasureBoxIcon: '//jdgjimage-1251031594.image.myqcloud.com/af453976e55d3055464da5d90170ce0c',
// 已打开宝箱的 icon
treasureBoxOpenIcon: '//jdgjimage-1251031594.image.myqcloud.com/0f929a75fbcdc56114cab26e31fe2acb',
},
};资源下载
SDK下载
- dappbirds-lightgame-sdk 1.0.5 下载
钱包下载
- EOS,BOS: https://get-scatter.com/?ref=DAppBirds
- TRON: https://tron.watch/projects?ref=DAppBirds
- ONT: http://showdoc.imakejoy.com/web/#/22?page_id=419
- IOST: http://showdoc.imakejoy.com/web/#/22?page_id=426
- WICC: http://showdoc.imakejoy.com/web/#/22?page_id=427
- NEO:http://showdoc.imakejoy.com/web/#/22?page_id=452
官方钱包下载
- DAppBirds: http://dappbirds.com