1

ゲームキットに問題があります。すべて正常に動作しますが、唯一の問題は、ログに記録されたユーザーの変更です。アプリの実行中に、gamecenter でユーザーがいつサインアウトまたはアカウントを変更したかを知りたいです。この種の通知に次のコードを使用しましたが、機能しません

 NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

[nc addObserver: self selector:@selector(authenticationChanged) name:GKPlayerAuthenticationDidChangeNotificationName object:nil];

通知を受け取りません。この cos in ビューはロードされました!

何か案は??私を助けてください!!

ゲームセンターのサインインと通知のみで新しいプロジェクトを作成しようとしましたが、問題は解決しません:(

- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(authenticationChanged) name:GKPlayerAuthenticationDidChangeNotificationName object:nil];
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)        {NSLog(@"SDADA  %@",error);}];
NSLog(@"%@",[[GKLocalPlayer localPlayer]alias]);
 }


  -(void)authenticationChanged

   {

NSLog(@"ooo");

    }

何を忘れたの??

4

3 に答える 3

2

iOS 4.1 では、GKPlayerAuthenticationDidChangeNotificationName がシミュレーターのバックグラウンドで起動しません。これをバグとして Apple に報告したところ、iOS 4.2 では再開時にこの通知が発生するという回答がありました。

于 2010-11-07T16:27:45.990 に答える
0

OK、今私は自分の問題を知っていますが、解決策はありません。問題は、GKLocalPlayer のフィールド isAuthenticated です。ユーザーがログアウトしても、このフィールドは変更されません。私が忘れたものはありますか?何か案は??

||||||問題は、デバイスがすべて機能するシミュレーターです!

于 2010-09-20T14:54:52.520 に答える
0

コードは正しいようです。また、ハンドラーが次のようになっていることも確認してください。

- (void) authenticationChanged
{
    if ([GKLocalPlayer localPlayer].isAuthenticated)
        // Insert code here to handle a successful authentication.
    else
        // Insert code here to clean up any outstanding Game Center-related classes.
}

また、viewDidLoad ではなく init 関数で通知を登録することをお勧めします。

于 2010-09-20T09:04:13.920 に答える