読者です 読者をやめる 読者になる 読者になる

エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

GameCenterでマッチングが切断したのをmatch:shouldReinvitePlayer:で再接続しようとした、がダメっ・・!

GameCenterアプリを作ってるんですが、マッチングして通信対戦状態のときに切断してしまったらどうなるのかという事を考えていました。
で、切断してしまったらそのマッチングで切断した相手を戻す事ができないっぽくて、その場で別のプレーヤーを探すなり終わらせるなりの処理をしなきゃいけないのかな〜、それはチョットやだな〜、などと思っていたら、なんと、このようなメソッドがありました!

- (BOOL)match:(GKMatch *)match shouldReinvitePlayer:(NSString *)playerID

http://developer.apple.com/library/ios/#documentation/GameKit/Reference/GKMatchDelegate_Ref/Reference/Reference.html

GameKitプログラミングガイドに載っていなくて、GKMatchDelegateのリファレンスにちょこっとありました。iOS5.0以降使用可能です。

1対1のマッチゲームに関してだけ使えるメソッドらしく、切断したときにこのメソッドが呼ばれて再接続を試みてくれるっぽいです。

が、ダメっ・・・!

う〜む、メソッドが呼ばれない。。切断するといきなりmatch:player:didChangeState:が発動しちゃいます。
GKMatchDelegateは有効になっていて、match:player:didChangeState:と同じ様に書いてるんですが・・このshouldReinvitePlayerの方は動きません。

テストは実機(iPhone4S+3G, iPod touch第3世代32G+WiFi)で片方の通信を切って行いました。(iPod touchWiFiを外部から停止)

この方法ではshouldReinvitePlayerの発動条件は満たさないんでしょうかね・・・?
ともかく、できませんでした。残念・・。

しかしこのメソッド全然情報がないっす・・使われてるのかな・・?