2011-01-09 30 views
6

cố gắng triển khai nhiều người chơi. Sử dụng mẫu từ Game Center - Sending and receiving data.Trình xử lý lời mời GameCenter

Mọi thứ có vẻ ổn, nhưng trong apple documentation cũng có thông báo về trình xử lý lời mời.

[GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) { 
    // Insert application-specific code here to clean up any games in progress. 
    if (acceptedInvite) { 
     GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite] autorelease]; 
     mmvc.matchmakerDelegate = self; 
     [self presentModalViewController:mmvc animated:YES]; 
    } else if (playersToInvite) { 
     GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease]; 
     request.minPlayers = 2; 
     request.maxPlayers = 4; 
     request.playersToInvite = playersToInvite; 

     GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease]; 
     mmvc.matchmakerDelegate = self; 
     [self presentModalViewController:mmvc animated:YES]; 
    } 
}; 

Vấn đề khá đơn giản: Tôi không biết thêm mã này ở đâu.

+0

câu hỏi tương tự đã xuất hiện trong tâm trí của tôi;) \ – Mazyod

Trả lời

11

Như đã nêu trong các tài liệu

ứng dụng của bạn nên thiết lập các handler mời càng sớm càng tốt sau khi ứng dụng của bạn được đưa ra; một nơi thích hợp để đặt trình xử lý đang ở trong khối hoàn thành mà bạn đã cung cấp thực hiện sau khi trình phát nội bộ được xác thực .

Một nơi nào đó trong mã của bạn, bạn nên đã được chứng thực các cầu thủ địa phương với một cái gì đó như thế này

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) { 
    if (error == nil) { 
     // Insert your piece of code here 
    } else { 
     // Handle the error 
    } 
}]; 

Hy vọng rằng sẽ giúp

+0

Vấn đề của tôi. Chưa đọc hết. Xin lỗi vì câu hỏi ngớ ngẩn. – 0xDE4E15B

+1

Chúng tôi đã làm tất cả điều này, không có vấn đề lớn :) – Jilouc

+0

Xin chào. Bạn có thể vui lòng xem câu hỏi của tôi không? http://stackoverflow.com/questions/10970538/how-to-accept-an-invitation-in-game-center –

1

Mã của tôi là dưới đây, và nó hoạt động rất tốt. Trong số authenticateLocalUser, hãy thêm mã bên dưới:

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) { 
    [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) { // Add for invite handler 
     // Insert application-specific code here to clean up any games in progress. 
     if (acceptedInvite) { 
      GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite] ; 
      mmvc.matchmakerDelegate = self; 
      // [self presentModalViewController:mmvc animated:YES]; 
      [_delegate matchStart]; 
     } else if (playersToInvite) { 
      GKMatchRequest *request = [[GKMatchRequest alloc] init] ; 
      request.minPlayers = 2; 
      request.maxPlayers = 2; 
      request.playersToInvite = playersToInvite; 

      GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithMatchRequest:request] ; 
      mmvc.matchmakerDelegate = self; 
      // [self presentModalViewController:mmvc animated:YES]; 
      [_delegate matchStart]; 
     } 
    }; 

    [self callDelegateOnMainThread:@selector(processGameCenterAuth:) withArg:NULL error:error]; 
}]; 
Các vấn đề liên quan