GKSession自身(同じデバイス)を検索しています、なぜですか? GKRocketの例でも、どうしてですか?なぜiphoneはGKSessionで自分自身を検索しますか?
自己接続しないようにするにはどうしたらよいですか?
GKSession自身(同じデバイス)を検索しています、なぜですか? GKRocketの例でも、どうしてですか?なぜiphoneはGKSessionで自分自身を検索しますか?
自己接続しないようにするにはどうしたらよいですか?
GKSessionは、一致するIDを持つセッションを探します...同じIDを持つデバイスから新しいセッションを作成すると、古いセッションが見つかります
session.available = NO;
検索されているデバイス上の..
何がしなければならないことを使用することです。検索が終了したらYESに設定してください。
セッションはAppDelegateの一部である場合:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
私は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のようなメソッドを確認してください。
,,私はまだあなたが何を意味するかは分かりませんでした。もっと説明できますか? –
私は、あなたのアプリが何らかの理由で同じセッションIDを使ってセッションを再作成した場合、そのようなセッションが2つ存在すると思います。セッションの1つは、他のデバイスが別のデバイスであると判断し、それをピアのテーブルに表示します。これは正しいですか? – Tim