私は Game Center のコードで問題が発生し、研究を重ねて研究し、受け入れられている標準的なアプローチと思われるものを使用しています。どこで問題が発生しているのかわかりません。
私は 4 人用のカード ゲームを書いています。脱落したプレイヤーがいる場合は、ゲームに招待してもらいたいと思っています。
シナリオは次のとおりです。試合が行われており、すべてのプレイヤーがゲームに参加しています。1 人のプレーヤーがゲームから脱落します。指定されたホストは切断を検出し、 を使用してドロップアウトに招待を送信しaddPlayersToMatch
ます。ドロップアウトのinviteHandlerが最初に設定されており、発火します。ドロップアウトは招待を受け取り、標準コードと思われるものを呼び出します。
GKMatchmakerViewController *mmvc
mmvc = [[GKMatchmakerViewController alloc] initWithInvite:_pendingInvite];
mmvc.matchmakerDelegate = self;
[_presentingViewController presentViewController:mmvc animated:YES completion:nil];
ドロップアウト マシンでは、MatchMakerViewController が適切に表示され、すでに試合に参加しているプレイヤーのみが表示され、すぐに「準備完了」とマークされます。ただし、コントローラーには「ゲームが開始されるのを待っています...」というメッセージが表示され、起動されdidFindMatch
ません。ゲームを開始するための UI はありません (唯一のボタンは左上の [キャンセル] です)。
奇妙なことは、ホスト マシンinviteeResponseHandler
が起動するため、ドロップアウトが戻ってきたというメッセージをホストが受け取ったようです。こちらに電話finishMatchmakingForMatch
していますが、何もしていないようです。
では、ドロップアウトに MatchMakerViewController を閉じるように指示するにはどうすればよいでしょうか?
髪を引き裂く!