私はゲーム センターのマルチプレイヤー アプリに取り組んでいますが、頭を悩ませるものを見つけました。両方のデバイスで GKMatchmakerViewController が稼働していない限り、ゲームへの招待を問題なく受信できます。ただし、両方のデバイスで開いており、招待状が送信された場合、ユーザーがアラート バナーで [承諾] を選択しても何も起こりません。これを行う方法を示す良い実例はありますか? 私は Ray Wenderlich の GCHelper に取り組んでいますが、この問題について何週間も進展がありません。
[GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite)
{
NSLog(@"Received invite!!!");
self.pendingInvite = acceptedInvite;
self.pendingPlayersToInvite = playersToInvite;
Class gcClass = (NSClassFromString(@"GKLocalPlayer"));
NSString *reqSysVer = @"5.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
BOOL osVersionSupported = ([currSysVer compare:reqSysVer
options:NSNumericSearch] != NSOrderedAscending);
gameCenterAvailable=gcClass && osVersionSupported;
if (!gameCenterAvailable) return;
matchStarted = NO;
self.match = nil;
if (acceptedInvite) {
NSLog(@"pendingInvite != nil");
AppDelegate *gcdelegate = (AppDelegate *) [UIApplication sharedApplication].delegate;
[gcdelegate.viewController dismissModalViewControllerAnimated:YES];
GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithInvite:pendingInvite];
mmvc.matchmakerDelegate = self;
[gcdelegate.viewController presentModalViewController:mmvc animated:YES];
self.pendingInvite = nil;
self.pendingPlayersToInvite = nil;
boo_invite=true;
}
else {
NSLog(@"pendingInvite == nil");
AppDelegate *gcdelegate = (AppDelegate *) [UIApplication sharedApplication].delegate;
[gcdelegate.viewController dismissModalViewControllerAnimated:NO];
request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 4;
request.playersToInvite = pendingPlayersToInvite;
GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithMatchRequest:request];
mmvc.matchmakerDelegate = self;
[gcdelegate.viewController dismissModalViewControllerAnimated:YES];
self.pendingInvite = nil;
self.pendingPlayersToInvite = nil;
}
};
問題は関係していると思います」
警告: プレゼンテーションの進行中にプレゼンテーションを試みてください!
これを修正するにはどうすればよいですか?