iOS 6의 GameKit API에 대한 업데이트 덕분에 마침내 턴 시간 초과 및 더 나은 프로그래밍 방식의 성냥 생성을 통해 턴 기반 보드 게임을 구현할 수있게되었습니다. 그러나 나는 해결할 수없는 문제에 직면 해있다. 내 목표는 Game Center를 최종 사용자가 완전히 볼 수 없도록 실행하여 모든 것이 프로그래밍 방식이며 내 자신의 사용자 지정 인터페이스를 사용하는 것입니다. 따라서 기본 GKTurnBasedMatchmakerViewController가 아닌 일치하는 항목을 표시하기 위해 자체 사용자 정의 테이블보기를 사용합니다. 바로 지금, -loadMatchesWithCompletionHandler : 메소드를 사용하여 오픈 매치를 표시하는 데 아무런 문제가 없습니다. 나는 또한 자동 매치 (문제가 아님)를위한 직접 생성과 초대를 위해 localPlayer의 Game Center 친구들을로드하는 테이블 뷰를 사용하여 일치를 만드는 맞춤 화면을 사용합니다. playersToInvite 속성을 이제 playerID로 채울 수 있으므로 iOS 6에서 가능합니다.GKMatchRequest 초대장이 다른 기기에 표시되지 않습니다.
내 주요 문제는 수신자 측에서 초대를 처리하는 것입니다. 다음 코드로 초대장을 보냅니다.
-(void)invitarAmigoMio:(NSArray*)losAmigos
{
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.defaultNumberOfPlayers=2;
request.playersToInvite = losAmigos;
request.inviteMessage = @"Your Custom Invitation Message Here";
request.inviteeResponseHandler = ^(NSString *playerID, GKInviteeResponse
response)
{
if (response==GKInviteeResponseAccepted)
{
NSLog(@"INVITACION ACEPTADA");
}
else
{
NSLog(@"INVITACION RECHAZADA");
}
};
}
알림을 처리하는 대리인이 있습니다. 다음 코드 알림이 전송되지 않는 이유는 사용자가
-(void)registroNotificaciones
{
NSLog(@"registroNotificaciones");
[GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite* acceptedInvite, NSArray *playersToInvite)
{
if(acceptedInvite != nil)
{
// Get a match for the invite we obtained...
[[GKMatchmaker sharedMatchmaker] matchForInvite:acceptedInvite completionHandler:^(GKMatch *match, NSError *error)
{
if(match != nil)
{
NSLog(@"match != nil: ");
}
else if(error != nil)
{
NSLog(@"ERROR: From matchForInvite: %@", [error description]);
}
else
{
NSLog(@"ERROR: Unexpected return from matchForInvite...");
}
}];
}
};
NSLog(@"FIN registroNotificaciones");
}
을 인증? 또는 통지가 수신되지 않을 때 시작인가? 게임을 초대 알림을 보낼 수있는 또 다른 방법이 있습니까? Game Center의 샌드 박스 계정에서 초대장을받을 수 있으며 진행 상황을 알 수 없습니다.
왜 iOS 7에서는 '.inviteHandler'를 사용하지 않을까요? 'GKInvite * acceptedInvite'를 다른 방법으로 얻는 방법? –