2017-12-13 9 views
0

私は小さなターンベースのiOSアプリのオンラインゲームを実装しています。オブジェクトをリスナーとして登録する方法(またはデリゲートとしてオブジェクトを設定する方法)がわからないため、「GKSavedGameListener」プロトコルを実装する際に問題が発生します。GKSavedGameListenerプロトコルの使い方は?

"GKLocalPlayerListener"と同様の問題が発生しましたが、GKLocalPlayerが "registerListener:"経由で登録を許可されていました。この種の不足しているリンゴの文書が見つかりました。残念ながら、 "GKSavedGameListener"は実装が簡単ではないようです。

GKLocalPlayerは "GKSavedGameListener"に準拠していますが、プロトコルにオプションの機能を実装していないようです(少なくともGKLocalPlayer.hには表示されません)。

私は特に「player:didModifySavedGame:」に興味があります。

"GKSavedGameListener"プロトコル関数でカスタム動作を実装するにはどうすればよいですか?

答えて

1

Appleのドキュメントのガイダンスごとに:https://developer.apple.com/documentation/gamekit/gklocalplayerlistener?changes=_7&language=objcGKLocalPlayerListenerは、とりわけGKSavedGameListenerから継承しています。 GKLocalPlayerListenerの実装が必要な場合は、4つすべてのメッセージが表示されます。

あなたが登録した後、あなたのクラスは、それらを受け取るようにGKLocalPlayerListenerに準拠するように、あなたのクラスを設定:

@interface MyGameKitHelperClass : UIViewController 
< 
    GKLocalPlayerListener 
> 

あなたは、あなたのクラスは、適切なメッセージを受信したときに呼ばれて、あなたのクラスの機能を実装することができます。

-(void)player:(GKPlayer *)player didModifySavedGame:(GKSavedGame *)savedGame 
{ 

} 


-(void)player:(GKPlayer *)player hasConflictingSavedGames:(NSArray *)savedGames 
{ 

} 

// or whichever functions you're interested in. 
+0

ありがとうございました!私はいくつかのテストを行い、それを動作させましたが、それは信頼できないと感じました。だから自分のポーリング機能を実装して、ターンがいつ動いたかを判断しました。 多くの人がこのプロトコルに問題があるようです。 [このトピックに関する別の質問](https://stackoverflow.com/questions/47645092/how-is-gkturnbasedmatchmaker-used/47852400#47852400) –

関連する問題