起動時に、各デバイスで次のメソッドを呼び出すことにより、デバイス間のゲーム センター サーバー上のすべての一致をプログラムでクリアしようとしています。
/**
* called to authenticate the players game centre id
*/
- (void)authenticateLocalUser
{
if (!self.gameCentreAvailable) return;
NSLog(@"Authenticating Local User.");
if ([GKLocalPlayer localPlayer].authenticated == NO)
{
[[GKLocalPlayer localPlayer] setAuthenticateHandler:^(UIViewController* viewcontroller, NSError *error)
{
NSLog(@"Inside Authentication Handler.");
// if there was no error, and we got a valid view controller to display
if (!error && viewcontroller)
{
// get a handle to the app delegate
AppDelegate *delegate = [UIApplication sharedApplication].delegate;
// use the view controller in the app delegate to present the authentication view controller
[delegate.viewController presentViewController:viewcontroller animated:YES completion:
^{
// once the view controller has been displayed, register the change in authentication
[self authenticationChanged];
}];
// set this class as the event handler delegate
GKTurnBasedEventHandler *event = [GKTurnBasedEventHandler sharedTurnBasedEventHandler];
event.delegate = self;
}
// load all of the matches the player is currently a part of
[GKTurnBasedMatch loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error)
{
NSLog(@"Error loading matches: %@", error);
// for each match
for (GKTurnBasedMatch *match in matches)
{
// log the id of the match
NSLog(@"ID of match we are removing: %@", match.matchID);
// and then remove it
[match removeWithCompletionHandler:^(NSError *error)
{
NSLog(@"Error removing match: %@", error);
}];
}
}];
}];
}
else
NSLog(@"Already Authenticated.");
}
ただし、この方法は機能せず、代わりにコンソールに次のエラーが表示されます。
2012-11-05 08:32:39.699 Spinning Yarn[6266:907] 一致の削除エラー: エラー Domain=GKErrorDomain Code=17 「1 つ以上のパラメーターが無効なため、要求された操作を完了できませんでした。」UserInfo=0x1e5b2140 {NSLocalizedDescription=1 つまたは複数のパラメーターが無効なため、要求された操作を完了できませんでした。}
発生している唯一のエラーは、removeWithCompletionHandler の内部です。それ以外はすべて問題なく、エラーはありません。
どんな助けでも素晴らしいでしょう。