0

我们的排行榜有几个问题:

1)我们的排行榜设置为全球。当我在游戏中列出所有条目时,我得到了这个:

在此处输入图像描述

这是同一张表,但可读性更好:

在此处输入图像描述

表有 5 个条目,但缺少排名 1 和排名 5。第一条记录是排名 2 的“Jiří”。但是,从 FB 页面我知道有排名 1 的人(Jamie Pichardo Garcia):

在此处输入图像描述

那么,第一个问题是,为什么这个人没有在表中列出?

2) 调用 getEntriesAsync 有 2 个参数:要返回的条目数和距表顶部的偏移量。下面是我们在调用 getEntriesAsync(1, x) 时得到的结果表,其中 x 是从 0 到 7 的数字:

在此处输入图像描述

使用偏移量 0 调用不会返回任何条目(应该返回“Jiří”,因为他是表中的第一个?)。使用偏移量 4 调用也不会返回任何内容。实际上,它看起来返回的记录是 rank = offset + 1。如果表中缺少这样的 rank,它不会返回任何条目(或拒绝 - 见第 3 点))

所以,第二个问题是:这是预期的行为还是错误?对于偏移量 0,我希望表中的第一个条目,偏移量 1 第二个条目......

3)没有找到条目时存在不一致的行为。在我的 PC 和许多设备上,承诺通过空的条目数组来解决。在 Android 4.4 上的 Messenger 中,同样的承诺被拒绝(这里没有谈论其他承诺问题)。如果我们调用具有更高计数的 getEntriesAsync()(例如:返回 2 个条目),如果找不到至少一个条目(例如在列出的表上调用 getEntriesAsync(2, 4)),则该承诺也会被拒绝 - 它返回一个条目在电脑上。

所以,第三个问题是:它是错误吗?承诺应该总是用空数组解决吗?如果只有一个条目丢失,它肯定不应该拒绝......

4)最后,我们想要实现什么,什么似乎效果不佳。对于玩家,我们希望获得在全球排行榜上排名更高的对手。不幸的是,您可能会意外进入跳过的行列,然后没有对手返回(或者您甚至会被承诺拒绝)。例如,如果玩家等级为 6(表中的“Jirka”),我们要求输入偏移量为 4(4 = 6 - 1 - 1;-1,因为等级为 1...n,而偏移量为 0...n -1 和 -1 表示一个位置的得分更高)。如果调用 getEntriesAsync(1, 4),您的承诺要么以零条目解析,要么被拒绝(Messenger + Android 4.4)。

那么,第四个问题:有没有什么办法可以让玩家在全球排行榜上的排名更好?

4

1 回答 1

1

Facebook 被限制返回过去 90 天内未发生的活动的用户信息。因此,这些用户的一些分数将从排行榜中丢失。

我们正在研究在下一个 SDK 版本中解决此问题的方法。

第 (3) 点中的承诺拒绝很奇怪,我们正在调查是什么原因造成的。这个 API 应该跨平台完全一致。

要获得下一个玩家,您应该能够获取当前排名并获得下一个X分数,返回下一个非空排行榜条目。

于 2018-08-22T21:23:07.143 回答