2011-05-02 6 views

答えて

1

GKSessionは、一致するIDを持つセッションを探します...同じIDを持つデバイスから新しいセッションを作成すると、古いセッションが見つかります

session.available = NO; 

検索されているデバイス上の..

+0

,,私はまだあなたが何を意味するかは分かりませんでした。もっと説明できますか? –

+0

私は、あなたのアプリが何らかの理由で同じセッションIDを使ってセッションを再作成した場合、そのようなセッションが2つ存在すると思います。セッションの1つは、他のデバイスが別のデバイスであると判断し、それをピアのテーブルに表示します。これは正しいですか? – Tim

0

何がしなければならないことを使用することです。検索が終了したらYESに設定してください。

セッションはAppDelegateの一部である場合:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate]; 
0

私はGKRocketの修正版では、この問題を得ました。ピアが切断されると、アプリケーションはフロントスクリーンに戻され、セッションを開始したビューを再読み込みしました。

GKSessionを作成するクラスを可能な限り早期にインスタンス化することで、この問題を解決する必要があります。ユーザーは、アプリを閉じるまで、いつでも後ろをナビゲートしてはいけません。あなたはピアリストに呼び出すことができるように、そして、これらのメソッドは、このコードはGKRocketから変更されてAppDelegate

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

//We setup the GKSession at this stage so that we do not create duplicate sessions as 
//the user navigates to and from the game lobby controller finding and managing peers 
manager = [[SessionManager alloc] init]; 
manager.lobbyDelegate = nil; //There is no game lobby at this stage so we nil this. 
[manager setupSession]; 
// call the session manager's setup method to create the session. It will start 
//looking for peers right away, but we won't see that until we go to the game lobby 

} 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
//Pass a pointer to the session manager along the line of segues 
[[segue destinationViewController] setManager:self.manager]; 
} 

後の最初のビューコントローラからのものなど、あなたのナビゲーションスタック全体

をセッションコントローラクラスへのポインタを維持します - チュートリアルをチェックして、setupSessionのようなメソッドを確認してください。

関連する問題