#SDKBox# 打开GameCenter排行榜时,报错:sdkboxplay :Requesting leaderboard for unregistered name: HIGH_SCORE
问题环境
使用SDKBox接入苹果的GameCenter,启动后,显示登录GameCenter成功。但是,在提交分数到排行榜,或者显示排行榜的时候,却报了错误:
sdkboxplay :Requesting leaderboard for unregistered name: HIGH_SCORE
检查一下代码和几个相关的定义:
- 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
}
- sdkbox_config.json的定义:
"sdkboxplay": {
"leaderboards": [
{
"id": "HIGH_SCORE",
"name": "STACK MASTER"
}
],
- App Store Connect的排行榜定义
似乎并没有什么错误。。。
原因
找了很久,我才意识到,会不会是参数传错了。虽然一般来说,这种方法都是要求传id,但是,这里会不会要求传name?
于是乎,我改了一下参数……
然后,就解决了……
sdkbox的群里有个叫“吉米”同学提示说,用Name是为了跨平台。很有说服力!
这样就可以用同一个name来对应不同平台(ios和google play)的排行榜id。
解决
使用sdkbox_config.json中排行榜的name而不是id作为参数。
参考接口文档:
http://docs.sdkbox.com/en/plugins/sdkboxplay/v3-js/#methods
参考
特别感谢
- sdkbox 官方群:489182678, 这是我见过的最热情的技术群。
- 吉米同学,一言点醒梦中人。