GKSession - убить и возобновить сессию - PullRequest
1 голос
/ 29 января 2012

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

-(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?Заранее большое спасибо.

1 Ответ

3 голосов
/ 30 января 2012

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

...