由於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");
}
爲什麼通知不發呢,還是沒有收到通知的推出?是否有另一種方式來發送通知,邀請玩遊戲? 我檢查了我的沙箱帳戶的遊戲中心允許邀請,我不知道發生了什麼
爲什麼你使用'.inviteHandler',如果它不贊成iOS 7?如何通過另一種方式獲得'GKInvite * acceptedInvite'? – 2014-01-14 23:09:45