/ 开发笔记

#SDKBox# 打开GameCenter排行榜时,报错:sdkboxplay :Requesting leaderboard for unregistered name: HIGH_SCORE

问题环境

使用SDKBox接入苹果的GameCenter,启动后,显示登录GameCenter成功。但是,在提交分数到排行榜,或者显示排行榜的时候,却报了错误:

sdkboxplay :Requesting leaderboard for unregistered name: HIGH_SCORE

sdkboxplay gamecenter requesting leaderboard for unregistered name

检查一下代码和几个相关的定义:

  1. Cocos Creator代码:
    // 显示排行榜
    showDefaultLeaderBoard(){
        if(!this.isSDKBoxAvailable()){
            return;
        }

        this.showLeaderBoard(this.defaultLeaderBoard); // <= HIGH_SCORE
    }

    // 向排行榜提交分数
    addScoreToLeaderBoard(board:string, score){
        if(!this.isSDKBoxAvailable()){
            return;
        }

        console.info("[GameCenter] submit score to leaderboard: " + board);
        sdkbox.PluginSdkboxPlay.submitScore(board, score); // board = HIGH_SCORE
    }
  1. sdkbox_config.json的定义:
        "sdkboxplay": {
            "leaderboards": [
                {
                    "id": "HIGH_SCORE", 
                    "name": "STACK MASTER"
                }
            ], 
  1. App Store Connect的排行榜定义
    sdkboxplay gamecenter requesting leaderboard for unregistered name

似乎并没有什么错误。。。

原因

找了很久,我才意识到,会不会是参数传错了。虽然一般来说,这种方法都是要求传id,但是,这里会不会要求传name?

于是乎,我改了一下参数……

然后,就解决了……

sdkbox的群里有个叫“吉米”同学提示说,用Name是为了跨平台。很有说服力!
sdkboxplay gamecenter requesting leaderboard for unregistered name

这样就可以用同一个name来对应不同平台(ios和google play)的排行榜id。

解决

使用sdkbox_config.json中排行榜的name而不是id作为参数。

参考接口文档:
http://docs.sdkbox.com/en/plugins/sdkboxplay/v3-js/#methods

sdkboxplay gamecenter requesting leaderboard for unregistered name

参考

  1. SDKBoxPlay http://docs.sdkbox.com/en/plugins/sdkboxplay/v3-js/

特别感谢

  1. sdkbox 官方群:489182678, 这是我见过的最热情的技术群。
  2. 吉米同学,一言点醒梦中人。