App ID & Game Center - II (代码部分)

翻译 2012年03月30日 17:34:54

Game Center 需要 target iOS在 4.1及以上


- (BOOL)isGameCenterAvailable
{
// Check for presence of GKLocalPlayer API
    Class gcClass = (NSClassFromString(@"GKLocalPlayer"));
// Check if the device is running iOS 4.1 or later
    NSString *reqSysVer = @"4.1";
    NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
BOOL osVersionSupported = ([currSysVer compare:reqSysVer
options:NSNumericSearch] != NSOrderedAscending);
return (gcClass && osVersionSupported);
}

弹出Game Center验证

[[GKLocalPlayer localPlayer]
    authenticateWithCompletionHandler:^(NSError *error) {
// Do something if necessary...
}];
a block of code that should be executed after the user successfully logs in or when there is an error. 


关注用户的认证状态通知

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(authenticationChanged) name:GKPlayerAuthenticationDidChangeNotificationName object:nil];
在用户第一次登陆时,这个 “authenticationChanged" 也会被调用。

所以如果想做一些用户登录成功后的处理,这里也可以做。


到project中,Build Phase 一tab, add Libraries >>  GameKit.framework

改为Optional。



创建NSObject的子类: GCHelper.h

#import <Foundation/Foundation.h>
#import <GameKit/GameKit.h>
@interface GCHelper : NSObject {
BOOL gameCenterAvailable;
BOOL userAuthenticated;
}
+ (GCHelper *) sharedInstance;
- (void)authenticationChanged;
- (void)authenticateLocalUser;
@end

GCHelper.m

- (BOOL)isGameCenterAvailable {
// check for presence of GKLocalPlayer API
Class gcClass = (NSClassFromString(@"GKLocalPlayer"));
// check if the device is running iOS 4.1 or later
NSString *reqSysVer = @"4.1";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
BOOL osVersionSupported = ([currSysVer compare:reqSysVer
options:NSNumericSearch] != NSOrderedAscending);
return (gcClass && osVersionSupported);
}

#pragma mark Internal functions
- (void)authenticationChanged {
dispatch_async(dispatch_get_main_queue(), ^(void)
    {
if ([GKLocalPlayer localPlayer].isAuthenticated && 
           !userAuthenticated) {
NSLog(@"Authentication changed: player authenticated.");
           userAuthenticated = TRUE;
       } else if (![GKLocalPlayer localPlayer].isAuthenticated && 
                  userAuthenticated) {
NSLog(@"Authentication changed: player not authenticated");
           userAuthenticated = FALSE;
       }
    });
}

最后,如果你的app由一个development provisioning profile 来build的话,它启动的GC就是sandbox环境。







在代码中使用Game Center Learderboard的操作

Reporting Scores to Game Center Your application transmits scores to Game Center by creating a GK...

iOS游戏开发之Game Center研究

iOS游戏开发之Game Center研究

Game Center简述

Game Center简述   Game Center(苹果游戏中心)是专为游戏玩家设计的社交网络平台,类似于iTunes中专为歌迷设计的Ping,从核心功能上看基本等同于微软的Xbox Liv...

iphone__game center 多人游戏

免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作...

game center文档

  • 2014年05月05日 18:18
  • 394KB
  • 下载

iOS游戏开发之Game Center研究

// 作者: 卞翔 // 联系QQ: 1023537528 // iOS技术交流群: 160603792 // GitHub:https://github.com/bianxia...
  • BX_Jobs
  • BX_Jobs
  • 2016年09月06日 12:30
  • 872

短信、邮件、通讯录、蓝牙、社交、Game Center、应用内购买、iClould、Passbook

来源于:http://www.cocoachina.com/ios/20150129/11068.html iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录、微信电...

Cocos2d-X 添加 Game Center 的方法

http://bbs.9ria.com/thread-248408-1-1.html gj多的一些内容 本教程基于cocos2d-x 13版本编写 主要内容是告诉大家在c++中...
  • lkeplei
  • lkeplei
  • 2014年07月25日 11:13
  • 409

Game Center,移动游戏社交平台的勘探报告

Game Center,移动游戏社交平台的勘探报告 作者:马宁   缘起 亲爱的朋友, 当你读到这封信的时候,我们已经在路上了。南加州发现了金矿,先到那里的人会赢得鲜花、掌声,以及足以笑傲未...
  • aawolf
  • aawolf
  • 2011年03月31日 14:13
  • 8107
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:App ID & Game Center - II (代码部分)
举报原因:
原因补充:

(最多只允许输入30个字)