2015-06-22 25 views
0

比賽結束後已經結束,分數(reportablesGKScore對象數組)報道:GameCenter的高分不包括最近成立得分

GKScore.reportScores(reportables, withCompletionHandler: {(error) -> Void in 
    if (error != nil) { 
    Log.INFO("reportScores callback: \(error)") 
    } else { 
    Log.INFO("reported score") 
    self.populate_high_scores(leaderboard) 
    } 
}) 

populate_high_scores建立請求GKLeaderboard,然後發出呼叫檢索高分:

request.loadScoresWithCompletionHandler({(scores, error) -> Void in 
    self.populate_high_scores_handler(scores, error: error) 
}) 

因此刷新:

  1. 用戶玩遊戲。
  2. 高分報告給GameCenter。
  3. <等待>
  4. 收到回叫指示成功。
  5. 索取GameCenter的高分。
  6. <等待>
  7. 從GameCenter獲得高分。

從GameCenter返回的分數不包括剛剛保存的分數。請注意,在貫穿,得分將被返回。即當前高分爲50.用戶玩遊戲,分數爲100. GameCenter返回50分。用戶再次玩遊戲,得分爲150. GameCenter返回100分。

我不確定這是GameCenter沙盒模式的「特徵」,還是我應該解決的問題。

實際上,我是從GameCenter中檢索正確的分數子集(減去最近設置的分數)。此外, GameCenter從reportScores成功返回後,肯定會發出獲得高分的請求

+0

我剛剛用彈出的Game Center排行榜替換了我的自定義遊戲結束視圖/代碼,並注意到Apple代碼也出現了同樣的問題。所以它只是沙箱或者一個已知的bug。 –

回答

1

遊戲中心已知在更新數據時遇到問題,而在沙箱中,開發人員在服務器上獲得最低優先級。

嘗試測試代碼在非高峯時間(早晨和深夜工作最適合我)

你可以做的另一件事是提交你的分數,並繼續檢查排行榜,直到它更新,然後再次提交以確保一切正常。

我最近在同時向3個排行榜提交時遇到了這個問題,其中只有一部分會在我測試時更新,但是現在相同的代碼現實生活在現實世界中,沒有問題。