2011-09-02 4 views
2

私はGameKitでしばらく取り組んでいます。ほとんどすべてがうまく動作します。私はsession:peer:didChangeState:メソッドに大きな問題があります。再開後にメソッドが呼び出されません。GKSession:Appを中断しても表示されない

AppleのGKRocketの例では、アプリケーションが中断した場合(willTerminate)、戻ってきたとき(willResume)にセッションが破棄されます。私のアプリでは、セッションを続けるのがいいでしょう。

私が見ることのできるログでは、アプリケーションが中断したときにGKPeerStateUnavailable状態のsession:peer:didChangeState:が呼び出されますが、GKPeerStateAvailableで呼び出しを再開しても表示されません。セッションは利用可能です。しかし、新しいクライアントでさえ、デバイスを見つけることはできません。

私はSessionModes Server/Clientを使用します。

ご協力いただきありがとうございます。

答えて

0

私はいくつかの時間前のセッションで遊んでますが、いくつかの提案を持っていた...

再開-afterあなたが目を覚ましたデバイスに眠っていたデバイスから詰まっ送信しようとした場合、何が起こりますか?それは通過するのですか?

-GKPeerStateUnavailable/availableが必要ですか?私の経験から、使用する必要があるのはapplicationDidBecomeActiveとapplicationWillResignActiveメソッドです:スリープ状態になると、起きているときにGAME_PAUSEDを他のデバイスに送ります - GAME_UNPAUSED。ユーザーがアプリをスリープ状態にして閉じた場合、不運にも、他のプレイヤーは永遠にそこに座ります(メインメニューを終了するオプションを与えることができます)。このアプローチは、Appleの2つのアプリケーションでテストされています(承認の点で)。 よろしく!

+0

Perhapse私はセッションオブジェクトのクライアント/サーバー構成で動作することを言及する必要があります。 1.パケットは問題なく配信されます。ここで興味深いのは、クライアントで設定されたiPadsによって送信されたすべてのパケットは、スリープ状態のiPadに移動し、サーバーのiPadが再びスリープ状態になると転送される点です。 2.サーバのリストで使用可能なデバイスを最新の状態に保つために、使用可能/使用不可が必要です。 – scrat84