0

我正在使用Google Play API編寫基於回合的多人遊戲Android遊戲。檢測過時Android上的ITurnBasedMatch

考慮未來版本的應用程序,我意識到我可能需要更改Byte Data Blob的格式,該格式由ITurnBasedMatch對象傳遞。

如果我更改blob格式,我將需要在運行時檢測到我已收到的blob數據的哪個版本,以便它可以正確反序列化而不會崩潰。或者至少,拋出一條錯誤消息,並讓用戶知道匹配不再有效。

Google Play庫中是否有任何內容可以設置/獲取blob數據的版本號,之前的可以對其進行反序列化?

以供參考是谷歌播放使用通知匹配數據,該遊戲的回調函數的實現已更改:

public void OnTurnBasedMatchReceived(ITurnBasedMatch match) 
    { 
     // This happens when the other player makes a move in a match we are 
     // involved in (although not nessessarily playing right now). 
     OnUpdateMatchInfoRecieved(match); 
    } 

回答

1

沒有什麼具體在劇中庫指示版本號。通常這在應用程序的數據序列化中處理。一個非常好的解決方案是Flatbuffers:http://google.github.io/flatbuffers/

有一個很好的視頻總結在http://youtu.be/iQTxMkSJ1dQ

同時,是否有可能檢查緩衝區的第一對字節並確定版本?

例如,如果您的較新版本總是寫出V.x,其中V.是ASCII字符V和句點,並且x是序列化的版本號。通過這種方式,您可以安全地確定緩衝區是否不以V開頭。然後它是舊版本,並且您應該使用舊的反序列化邏輯。