使用facebook instant game API getLeaderboardAsync获取排行榜失败

(10,0)也完全不管用的

哦,找到原因了,creator1.9.1对应的FBInstant版本是6.0,然而,6.0没有我上面调用的那个方法,那个方法是6.2的,对应creator1.9.2版本

当改为yes的时候是表示自己的好友排行榜吗?但是改成yes后,获取不到排行榜,提示找不到。另外getConnectedPlayerEntriesAsync()表示的又是什么意思?

getConnectedPlayerEntriesAsync(5, 3)这个函数表示取到的是什么意思,取到的是什么数据?

请问,你的排行榜配置的时候 是全球排行榜还是社交排行榜?

第一个问题: yes的话,是社交排行榜,no为全球排行榜.
第二个问题:getConnectedPlayerEntriesAsync方法表示从全球排行榜中,找到自己的好友的排行,也就是说,从全球排行榜中,找到自己的好友的分数,得到一个排行榜,返回给我们.
第三个问题:2个参数分别代表什么,暂时用(5,3)来表示吧.官方文档对这两个数字的定义为count和offset,一个是想要获得的排行榜数据的条目,另一个也就是偏移量,所谓的偏移量,也就是index,从0开始算起,也就是说,从数组的第3位开始,取出5条数据.

对第三个问题进行说明,这里只是取出来一部分的排行榜,估计可鞥是为了做类似排行榜分页的功能,所以提供了这个接口,防止数据量太大,而客户端要一次都取出来造成的网络问题

1赞

我在配置的时候,配置的是全球排行榜,全球排行榜和社交排行榜在取数据的时候是有去别的:
假如排行榜名字叫做 myRank

  1. 如果是全球排行榜,排行榜的名字的字符串就是 ‘myRank’
  2. 如果排行榜是社交排行榜,那么排行榜名字的字符串是 ‘myRank.’ + FBInstant.context.getID() ;注意,这里面有一个点号 ‘.’ ,这个是必须要有的,否则会报错,其实在排行榜页面也能够区分出来什么是全球排行榜,什么是社交排行榜,
    如下图,很明显,社交排行榜后面会带上 ‘.<context_id>’ ,这也就是为什么社交排行榜名字字符串要带上FBInstant.context.getID() ;

1,我也是这样理解的,如果这样的话那getPlayerEntryAsync()这个函数代表的是自身的排名,如果是全球排行的话,是不是就代表的是在全球的排名?
2,其实就是想获得自己所有好友的排行榜,刚开始用的社交排行榜,但是总获取不到排行榜,提示找不到该排行榜,你用的是社交排行榜还是全球排行榜?

哦,第一个问题,我还没具体试过啊,这个你可以试试看,如果设置的是全球排行榜,那么一般来说,这儿方法获取的应该就是全球的排行榜.
第二个问题啊,我暂时用的是全球排行榜,社交排行榜获取不到的话,有可能是因为你调用的方法是Facebook的SDK6.2版本,然后开发环境的SDK是6.0版本造成的.简单的说,就是你用了Facebook6.2的SDK,但是这个SDK对应的是creator1.9.2,结果,你打包的时候是用的1.9.1,就会出现这个问题,1.9.1对应Facebook6.0的SDK,我就遇到了这个问题!!!

我刚测过了。
1,getPlayerEntryAsync()方法跟排行榜类型有关,全球排行榜得到的就是全球中的排行。
2,关于社交排行榜:指的是在特定环境中(messenger消息,帖子,群组等,类似微信的群排行),我之前获得不到,是因为运行环境为solo,所以得到的FBInstant.context.getID()得到的为null,在solo环境中是得不到排行榜的。

新问题:想要得到自己在好友中的排行名次,就复杂点了,不能直接获得了,恐怕只能通过遍历好友排行榜来获得了

要获取自己在好友中的排行,应该只能通过自己的Id,然后在好友榜中遍历判断了,还有,你说的solo环境是什么?想了解一下

6.0版本中的FBInstant.context API 中有解释,指的就是游戏的环境,分为 帖子,小组,messenger对话 ,还有 solo ,solo代表的是自己一个人的环境 ,每个环境都有一个ID ,FBInstant.context.getID(),solo返回的是null。
遍历好友,,,,,如果好友太多的话。。。。。。。。。。

6.0版本中的FBInstant.context API 中有解释,指的就是游戏的环境,分为 帖子,小组,messenger对话 ,还有 solo ,solo代表的是自己一个人的环境 ,每个环境都有一个ID ,FBInstant.context.getID(),solo返回的是null。
遍历好友,,,,,如果好友太多的话。。。。。。。。。。

请问你那边现在解决了 其实就是想得到一个和微信好友排行那样的功能 获取fb的自己好友排行 我用的是creator1.9.2 sdk v6.2 有解决方案的话 求告知 谢谢:pray:

嗨,你有没有手动添加 FB模块的sdk ?怎么添加的

FBInstant.updateAsync({
action: ‘LEADERBOARD’,
name: ‘test11’
})
.then(() => console.log(‘Update Posted’))
.catch(error => console.error(error));
采用这个方式向messager发送消息,控制台显示Update Posted,但是并没有收到相关消息,这个为什么呢(前面已经获取到了排行榜,采用全球排行榜)

而且如果采用社交排行榜,FBInstant.context.getID()一直都是null,不知道如何解决,有大神指点一下么

6.0版本中的FBInstant.context API 中有解释,指的就是游戏的环境,分为 帖子,小组,messenger对话 ,还有 solo ,solo代表的是自己一个人的环境 ,每个环境都有一个ID ,FBInstant.context.getID(),solo返回的是null。

这个是更新排行榜,并没有发消息

原来如此,难怪我用FBInstant.context.getID()得到的一直为null