2

この次の方法は iOS 6 では推奨されていませんが、引き続き機能します。非推奨のメソッドの警告を発行するだけです。私のAppDelegate.mファイルから:

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:(^(NSError *error) {
            if (localPlayer.isAuthenticated) {
                self.gameCenterAuthenticationComplete = YES;

                if (! self.currentPlayerID || ! [self.currentPlayerID isEqualToString:localPlayer.playerID]) {
                    self.currentPlayerID = localPlayer.playerID;
                }
            } else {
                self.gameCenterAuthenticationComplete = NO;
            }
        })];

そのため、代わりにこのメソッドを使用しようとしています。これは、iOS 6 で適切な方法です。アラートが表示されますが、表示されませんGame Center login view controller

[[GKLocalPlayer localPlayer] setAuthenticateHandler:(^(UIViewController *viewController, NSError *error) {
            if (localPlayer.isAuthenticated) {
                self.gameCenterAuthenticationComplete = YES;

                if (! self.currentPlayerID || ! [self.currentPlayerID isEqualToString:localPlayer.playerID]) {
                    self.currentPlayerID = localPlayer.playerID;
                    }
                } else {

                    UIAlertView *alertView = [[UIAlertView alloc]
                                              initWithTitle:@"NOT AUTHORIZED"
                                              message:@"This game requires Game Center to create matches."
                                              delegate:self
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
                    [alertView show];
                    self.gameCenterAuthenticationComplete = NO;
                }
        })];
    }
    return YES;

Game Center login view最初のアプローチ (非推奨の方法) では、アプリが開いてユーザーが GC にサインインしていないことを検出すると、すぐに が表示されます。また、ユーザーがログインすると、 「おかえり」ポップオーバーが表示されます。

2 番目のアプローチ (iOS 6 の方法) ではGC login screen、上で述べたように は表示されませんが、ユーザーが GC アプリ経由で GC に既にログインしている場合は、「おかえりなさい」と表示されます。

参考までに、iPhone 5 (6.0.1)、iPad mini (6.0.2)、およびシミュレーター (6.0) でこれを試しました。

なぜこれが起こるのか誰にも分かりますか?それが必要な場合、2番目のアプローチで手動で表示するGC login view controllerにはどうすればよいですか?

4

1 に答える 1

3

ログイン画面は自分で表示する必要があります。setAuthenticationHandler を呼び出すと、画面が設定され、「viewController」でその画面へのポインターが提供されます。あなたはただ言う

[self presentViewController:viewController];

これにより、ゲームのコンテキストで最も意味のあるときにログイン画面を表示できます。

ところで...エラーをチェックしていません。エラーは一般的です (ネットワーク アクセスがないなど)。

于 2013-01-04T15:37:57.733 に答える