1

我的游戏套件有些问题。一切正常,唯一的问题是用户登录的变化。当我的应用程序运行时,我想知道用户何时在游戏中心注销或更改帐户。我已经为这种通知使用了下一个代码,但它不起作用

 NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

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

我没有收到任何通知,这个进入视图的角色确实加载了!

有任何想法吗??请帮我!!

我尝试创建一个新项目,仅使用 gamecenter 登录和通知,但问题没有解决:(

- (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

代码似乎是正确的。还要检查您的处理程序是否类似于:

- (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.
}

此外,您可能希望在 init 函数中而不是在 viewDidLoad 中注册通知

于 2010-09-20T09:04:13.920 回答
0

好的,现在我知道我的问题,但我没有解决方案。问题是 GKLocalPlayer 的 isAuthenticated 字段,当用户注销时,该字段不会改变。有什么我忘记了吗?有任何想法吗??

||||||问题是设备所有工作的模拟器!

于 2010-09-20T14:54:52.520 回答