在我的遊戲加載時,我希望爲當前玩家獲得我的遊戲的所有等級(當前有22個)的所有分數。我這樣做:如何使用Google Play遊戲服務從多個排行榜中爲當前用戶加載分數?
@Override
public void onSignInSucceeded() {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 1; i < count; ++i)
score = getScoreGPGS(LEVEL_LIST(i).leaderBoardID);
// somehow use this score
}
}).start();
}
哪裏
public long getScoreGPGS(String leaderBoardID) {
try {
PendingResult<Leaderboards.LoadPlayerScoreResult> result;
result = Games.Leaderboards.loadCurrentPlayerLeaderboardScore(gameHelper.getApiClient(),
leaderBoardID, LeaderboardVariant.TIME_SPAN_ALL_TIME,
LeaderboardVariant.COLLECTION_PUBLIC);
LeaderboardScore score = result.await().getScore();
if (score != null)
return score.getRawScore();
else
return 0;
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
我明白result.await().getScore();
沒有做到這一點的最佳方式,但其他方面沒有還曾(我試圖使用回調以及爲所有我的排行榜創建PendingResults,然後在一個循環中等待它完成,這裏不是這種情況,這對我來說更方便)。
問題是我能夠僅接收3個第一級別的分數(在任何互聯網連接上的任何設備上)。如果我在失敗級別執行result.await()。getStatus(),它將不會成功或取消或中斷,具體返回什麼我不知道,因爲我無法調試它。
UPD:它似乎像服務器阻止我的電話。我試圖在每次調用之間暫停線程1秒鐘,但它不起作用,但是當我嘗試暫停線程10秒鐘時,它確實有效,但只有6個級別,這個時間可能會增加,但即使是10秒是等待的大好時機。也許對這個問題有不同的解決方法?
UPD2:在谷歌API控制檯這些電話都顯示爲API games.scores.get
「客戶端的錯誤」,但我敢肯定,我沒有超過我的每每100第二個用戶500個查詢配額。
我的配額是每100秒每個用戶500個查詢。我非常懷疑我超過了它。因爲在查詢排行榜分數之前,我只能登錄Google Play遊戲服務。而且我只能獲得3個排行榜評分,這意味着我之前做了497個查詢,這不可能是真實的,因爲當我查看API控制檯中的統計數據時,我可以看到我每天少於1000次查詢,但我每天都會測試我的應用幾次。 –