11

マッチを使ったゲームセンターゲームを作成していGKTurnBasedMatchます。readonly matchDataのプロパティGKTurnBasedMatchがGameCenterサーバーに適切に保存されていないように見えるという問題があります。

私はこのStackOverflowの回答matchData NSDataを使用して、Game Centerサーバーとの間で送受信されるときに、でmd5チェックサムを生成しています。

インスタンスメソッドを使用してNSData送信すると、ゲームデータオブジェクトのチェックサムに注意します。matchDataGKTurnBasedMatchendTurnWithNextParticipants:turnTimeout:matchData:completionHandler:

次に、対戦相手はGKTurnBasedMatchのクラスメソッドを使用して一致を取得しloadMatchesWithCompletionHandler:、一致が到着すると(エラーなし)、チェックサムを再度記録します。

2つのチェックサムが一致せず、再構築されたゲームに基づいて、結果のデータが明らかに同一ではありません。2つのアカウントでmatchID、オブジェクトのプロパティGKTurnBasedMatchが同一であることを確認しました。

次のテストも実行しました。

NSLog(@"matchID: %@ matchData checksum: %@",
                    match.matchID, 
                    [Utilities md5StringFromData:match.matchData]);

// match is a valid `GKTurnBasedMatch` object.
[match endTurnWithNextParticipants: @[ opponent ] // My `GKTurnBasedParticipant` opponent
                       turnTimeout:600
                         matchData:data // This is a valid NSData object
                 completionHandler:^(NSError *error) {
                      if (nil != error) {

                          NSLog(@"%@", error);

                      } else {

NSLog(@"Successfully ended turn.");

[GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error) {

    if (nil != error) {

        NSLog(@"Error getting matches: %@", [error localizedDescription]);

    } else {

        for (GKTurnBasedMatch *match in matches) {

            NSLog(@"matchID: %@ matchData checksum: %@", 
                        match.matchID, 
                        [Utilities md5StringFromData:match.matchData]);

        }

    }
}];

                      }
}];

このサンプルでは、​​データでターンを終了し、すぐにGameCenterから一致を取得します。データは一致します。ただし、matchData対戦相手のGame Centerアカウントとデバイスからにアクセスすると、それらは異なります。

誰かがこのようなものに遭遇しましたか?

4

1 に答える 1

11

私はAppleの開発フォーラムで解決策を発見しました。

loadMatchesWithCompletionHandler:常に最新のものを入手できるとは限りませんmatchData。最新バージョンであることを確認するには、オブジェクトのloadMatchDataWithCompletionHandler:メソッドを呼び出してください。GKTurnBasedMatch

于 2013-02-06T19:27:11.423 に答える