1.0.5 • Published 5 years ago

dappbirds-lightgame-sdk v1.0.5

Weekly downloads
1
License
MIT
Repository
-
Last release
5 years ago

该文档的目的是让开发者可以快速接入 dappbirds-lightgame-sdk,主要包括以下内容:

  • 相关环境介绍
  • SDK 文件介绍及加载方式
  • SDK 初始化
  • SDK 关键方法描述
  • 资源下载

相关环境描述

注意:体验线上或线下 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() 打开、关闭 Loading
  • getTreasureBoxInfo() 获取开宝箱状态,判断是否开过宝箱
  • 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.dataArray需要修改的道具列表
result.dataindex.product_noString道具编号
result.dataindex.numNumber需要添加的道具数量
result.dataindex.is_archiveNumber是否在服务端存档,如果是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 下载

钱包下载

官方钱包下载

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago