2010-11-07 3 views
4

Je suis confronté à la difficulté d'inviter un ami au match.Game Center invitant des amis progammatiquement

GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease]; 
    request.minPlayers = 2; 
    request.maxPlayers = 2; 
    request.playersToInvite = [NSArray arrayWithObjects: @"G:1102359306",nil ]; 


// GKMatchmakerViewController *mv = [[GKMatchmakerViewController alloc] initWithMatchRequest:request]; 
// [self presentModalViewController:mv animated:YES]; 


    [[GKMatchmaker sharedMatchmaker] findMatchForRequest:request withCompletionHandler:^(GKMatch *match, NSError *error) { 
     if (error) { 
      NSLog([error description]); 
     } 
     else if (match != nil) {NSLog(@"good match"); 
      //self.chatMatch = match; 
      //self.chatMatch.delegate = self;  
      //[self chatReady]; 
     } 
     else { 
      NSLog(@"other error"); 
     } 

    }]; 

Le problème est que je ne reçois jamais la notification d'invitation au deuxième dispositif connecté au compte - G: 1102359306. Lorsque j'utilise GKMatchmakerViewController (décommenter plus de 2 lignes) et commenter le bloc GKMatchmaker, j'ai automatiquement coché le bon ami - G: 1102359306 et quand je l'invite la notification avec acceptation/refus est affichée, c'est comme ça que je sais que c'est correct.

Voyez-vous quelque chose de mal avec le code ci-dessus? Je veux utiliser ma propre interface utilisateur pour gérer le mode multijoueur. Le problème étrange est que je ne vois pas non plus dans la console les logs une bonne correspondance/autre erreur, et la [description de l'erreur] n'est imprimée que lorsque j'appelle deux fois le code ci-dessus - cela indique que la demande précédente a été annulée.

Merci d'avance.

Répondre

2

Vous ne pouvez pas inviter par programmation un ensemble de lecteurs spécifique à une correspondance. Le findMatchForRequest:withCompletionHandler: documentation dit ceci:

La propriété playersToInvite de la requête de correspondance est ignorée; pour inviter un ensemble spécifique de joueurs à la partie, vous devez afficher un contrôleur de vue matchmaker.

Aucune API publique ne fait ce que vous voulez.

+0

Dans iOS 6, vous pouvez maintenant le faire, c'est-à-dire que la propriété playersToInvite n'est plus ignorée. – sup

+0

@sup est vrai, mais vous ne pouvez toujours pas intercepter des invitations via handleInviteFromGameCenter par programmation, car cet appel semble provenir uniquement des contrôleurs de vue Game Center. – todd412