1.0.5 • Published 5 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.js
index.html
Demo 页面
加载方式:
- 将资源中的
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-sdk
import { 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