Algumas perguntas de startBrowsingForNearbyPlayersWithReachableHandler

Estou tentando fazer com que o matchmaking local funcione no GameKit usando[[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:]. Essencialmente, estou tentando implementar correspondências locais sem interface: desde que haja um player na minha vizinhança local, quero me conectar e começar uma partida. Importante, eu quero fazer isso para os jogadores locais: euNunca deseja corresponder automaticamente pela Internet.

Ativei o Game Center para meu aplicativo no iTunes connect e me inscrevi em uma conta de sandbox diferente em todos os dispositivos que estou usando para testar.

Eu tentei tanto matchmaking comGKMatchmakerViewController (depois de autenticar o jogador local) e encontros programáticos comstartBrowsingForNearbyPlayersWithReachableHandler:, rodando o mesmo código em um iPhone 4 e um iPod touch da quarta geração ao lado um do outro na minha mesa. Nenhum dos dois encontra o outro; ao usarGKMatchmakerViewController a interface para encontrar jogadores próximos permanece no

Encontrando Jogadores ...

girador, e ao usarstartBrowsingForNearbyPlayersWithReachableHandler:, o bloco de notificação nunca é chamado.

Aqui está o meu bloco atual de código de teste:

-(void)connectLocal
{
    if( ![GKLocalPlayer localPlayer].isAuthenticated )
    {
        // authenticateLocalPlayer calls connectLocal again after authentication is complete
        [ self authenticateLocalPlayer ];
        return;
    }
    [[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:^(NSString *playerID, BOOL reachable) {
             NSLog(@"Reachability changed for player %@", playerID );
        } ];
}

Os documentos são um pouco escassos e confusos sobre o assunto, especialmente quando se trata da diferença entre o multiplayer local e os jogos pela Internet. Por exemplo, parece ser necessário autenticar o jogador local e criar uma partida antes de encontrar jogadores para participar dessa partida (Criar qualquer tipo de partida começa com uma solicitação de correspondência). Contudoesta pequena pepita parece sugerir o contrário:

A interface de usuário padrão permite que os jogadores descubram outros jogadores próximos, mesmo quando nenhum dos jogadores estiver conectado ao Game Center diretamente.

Adicionalmente, no fluxo descrito emProcurando por jogadores próximos, uma solicitação de correspondência não é criada até a etapa 3depois de encontrar jogadores através do bloco de notificação passado parastartBrowsingForNearbyPlayersWithReachableHandler:. Infelizmente, nunca cheguei tão longe.

Então, as perguntas:

1) Estou certo em pensar que posso ligarstartBrowsingForNearbyPlayersWithReachableHandler: antes de autenticar o player local? GameKit não lança um erro, então estou assumindo que está tudo bem. Isso pode ser uma suposição precipitada. Se eu autentico ou não, não parece fazer muita diferença.

2) Alguém implementou com êxito a correspondência automática local usando[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:? Existe um bom código de exemplo em qualquer lugar que ilustre o fluxo completo, desde procurar jogadores até começar uma partida, tudo programaticamente?

3) Parece haver relatos conflitantes na Web sobre se os aplicativos compatíveis com o GameKit podem ser testados no Simulador do iOS. O consenso geral não parece, e é melhor testar em hardware iOS. Eu tenho usado um iPhone 4 e uma quarta geração do iPod Touch. Para aqueles que testaram com sucesso o modo multiplayer local, qual configuração e metodologia de teste você usou?

questionAnswers(3)

yourAnswerToTheQuestion