2012-01-28 4 views
1

Чтобы прочитать новое отображаемое имя однорангового узла, мне нужно убить и обновить GKSession. Установка его на ноль и инициирование его заново не работает. В приведенном ниже кода, NSLog в для цикла чтобы показать доступные сверстник не называется (нет сообщений об ошибке):GKSession - убить и возобновить сеанс

-(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 на ноль и начать заново? Возможно, вы знаете о другом способе обновления GKSession? Большое спасибо заранее.

ответ

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. Приложение обе рекламирует себя в локальной сети и автоматически подключается к доступным одноранговым узлам, устанавливая одноранговую сеть.

Смежные вопросы