1

ピアの新しい表示名を読み取るには、GKSession を強制終了して更新する必要があります。nil に設定して新たに開始しても機能しません。以下のコードでは、使用可能なピアを表示するfor ループの NSLog は呼び出されません (エラー メッセージはありません)。

-(IBAction) btnRefresh:(id) sender {

    self.currentSession = nil;

    self.currentSession = [[GKSession alloc] initWithSessionID:@"anything" displayName:name sessionMode:GKSessionModePeer];
    self.currentSession.delegate = self;
    self.currentSession.available = YES;
    self.currentSession.disconnectTimeout = 0;
    [self.currentSession setDataReceiveHandler:self withContext:nil];

    peerListAvailable = [[NSMutableArray alloc] initWithArray:[currentSession peersWithConnectionState:GKPeerStateAvailable]];

    for (NSString *peer in peerListAvailable) {
       NSLog(@"found available peer; checking name and ID... %@, %@",[currentSession displayNameForPeer:peer], peer);
    }

currentSession を nil に設定して新たに開始することの何が問題になっていますか? GKSession を更新する別の方法をご存知でしょうか? よろしくお願いします。

4

1 に答える 1

3

次のメソッドはGKSession、セットアップとティアダウンを示しています。

- (void)setupSession
{
    gkSession = [[GKSession alloc] initWithSessionID:nil displayName:nil sessionMode:GKSessionModePeer];
    gkSession.delegate = self;
    gkSession.disconnectTimeout = 5;
    gkSession.available = YES;
}

- (void)teardownSession
{
    gkSession.available = NO;
    [gkSession disconnectFromAllPeers];
}

さらに深く掘り下げることに興味がある場合は、GKSessionP2Pをご覧ください。これは、のアドホック ネットワーク機能を説明するデモ アプリですGKSession。アプリは、ローカル ネットワーク上で自身をアドバタイズし、利用可能なピアに自動的に接続して、ピア ツー ピア ネットワークを確立します。

于 2012-01-30T08:52:54.167 に答える