iOS 6 での GameKit API の更新のおかげで、ターン タイムアウトとより優れたプログラムによるマッチの作成を完了して、ターン ベースのボード ゲームを本来あるべき方法で実装できるようになりました。しかし、私は解決できないように見える問題に直面しています。私の望みは、Game Center をエンド ユーザーから完全に見えないように実行することです。これにより、すべてがプログラム化され、独自のカスタム インターフェースが使用されます。
したがって、デフォルトではなく、独自のカスタム テーブル ビューを使用して一致を表示しますGKTurnBasedMatchmakerViewController
。現在、-loadMatchesWithCompletionHandler:
メソッドを使用してオープンマッチを表示するのに問題はありません。また、カスタム画面を使用してマッチを作成し、自動マッチ (問題ではありません) を直接作成し、招待用に localPlayer の Game Center フレンドをロードするテーブル ビューを使用します。playersToInvite
属性に playerID を入力できるようになったため、iOS 6 でこれが可能になりました。
私の主な問題は、受信者側で招待を処理することです。ボブを 2 人での対戦に招待するとします。現在、ボブの側での新しい招待の通知が見つからないようです。は-handleTurnEvent:
、既存の一致の場合、またはバナー通知がタッチされた場合 (ユーザーが行うことを保証できません) にのみ呼び出され-handleInviteFromGameCenter:
、この場合は何もしません。
新しい招待を検出してカスタム ゲーム ビュー コントローラーを更新するために私が思いついた唯一の方法は、-loadMatchesWithCompletionHandler:
メソッドを呼び出して、招待された参加者の lastTurnDate が nil であり、既存のオープン マッチの配列に対して新しいマッチをチェックすることです。GKTurnBasedEventHandler
新しい招待が受信されたときに呼び出される通知が見つからないため、バックグラウンドで約 10 秒ごとにこのチェックを実行します。助けてください!
編集:最後に、プルツーリフレッシュ機能を実装しました。ポーリングまたはユーザーのデータを携帯電話で浪費する他の方法を実装しないと方法がないため、オンデマンドで更新することが私の意見では最も理想的なソリューションです。