1

アプリで GameCenter を使用しています。私はこれらの行を持っています

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

        }

問題は、localPlayer.isAuthenticated フラグが常に TRUE であるということです。バー エラー変数には、コード 2 = 「操作がキャンセルされました」(???) が付属しています。

デバイスのゲーム センターとストアからサインアウトしましたが、このフラグは常に true であり、アプリの起動時に表示されるゲーム センターのサインインが表示されません。ゲーム センターを使用するゲームの開始時に常に表示される「ようこそ」バナーも表示されません。

Game Center から強制的にサインアウトして、サインイン ウィンドウを再度表示するにはどうすればよいですか?

iOS 4.3用にコンパイルしています。

ありがとう


私が今発見したことは、デバイスのゲーム センターにサインインしたことがない場合に発生するということです。そこにログインして、ゲームセンターでユーザー名を使用したいと言うと、アプリが機能します。最悪の部分は次のとおりです。誰かがゲームをダウンロードしたが、まだゲームセンターを設定していないとします。それで、ゲームは彼らにとって決してうまくいきませんか?私のゲームは、ゲーム センターをオンにした場合のみ動作するはずです。だから、私にとってこれは問題です。

4

1 に答える 1

0

私にとっては、うまく機能しています。からコードを変更しただけです

if([GKLocalPlayer localPlayer].authenticated)

if([GKLocalPlayer localPlayer].authenticated == NO)

//その他のコード

if([GKLocalPlayer localPlayer].authenticated == NO)
    {
              [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
             {
                  [self processGameCenterAuth: error];
             }];
    }


- (void) processGameCenterAuth: (NSError*) error
{
    if(error == NULL)
    {
        [mGameCenterManager reloadHighScoresForCategory: self.currentLeaderBoard];
    }
    else
    {
        // NSLog(@"%@\n\n",[NSString stringWithFormat: @"Reason: %@", [error localizedDescription]]);

        AppController *app = (AppController*)[UIApplication sharedApplication].delegate;

        if(!app.isgameCenterStarted)
        {
            UIAlertView* alert= [[[UIAlertView alloc] initWithTitle:@"Game Center Unavailable" message: @"Player is not signed in"
                                                           delegate: NULL cancelButtonTitle: @"OK" otherButtonTitles: NULL] autorelease];
            [alert show];
        }
        else
        {
            [[NSNotificationCenter defaultCenter] postNotificationName:@"GameCenterUnAvailable" object:nil];
        }
    }

}
于 2013-02-17T08:38:39.120 に答える