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环境。







App ID & Game Center - I

An App ID is the combination of a unique ten character string called the "Bundle Seed ID" and a trad...
  • skingtree
  • skingtree
  • 2012年03月30日 17:01
  • 2597

仿进入GameCenter的五个气球效果

前几天突然发现GameCenter中的气球效果很炫,就像去找一个例子来做项目,可惜怎么找都找不到,最后还是自己code了一个简单的类似效果,首先来看一下实现的效果: 气球的浮动效果没有官方的那么好,...
  • qq_22600319
  • qq_22600319
  • 2016年05月08日 18:27
  • 1237

在游戏中弹出GameCenter登陆界面

目前GameCenter的用户验证在6.0之前zhe z
  • hekejun19861107
  • hekejun19861107
  • 2014年04月18日 18:04
  • 2918

iOS第三方验证简单接入Game Center

1. 从2016年开始,Game Center已经取消了沙箱机制 2. 要开启Game Center,需要在iTunes Connect的Game Center处,新建一个排行榜或者成就。这个我觉得...
  • qq393830887
  • qq393830887
  • 2017年01月04日 19:59
  • 3970

Jump Game II -- LeetCode

原题链接: http://oj.leetcode.com/problems/jump-game-ii/  这道题是Jump Game的扩展,区别是这道题不仅要看能不能到达终点,而且要求到达终点的最少...
  • linhuanmars
  • linhuanmars
  • 2014年03月20日 23:25
  • 14663

基于Game Center的多人游戏简介

Game Center的高级开发是建立多人实时联网的比赛。开发者可以选择使用Game Center提供的服务器来运行游戏,或者使用自己的服务器来作数据并发。由于我的案例是选择了前者,所以本文只对使用G...
  • wzq9706
  • wzq9706
  • 2012年10月21日 21:46
  • 2817

【iOS开发必备指南合集】申请企业级IDP、真机调试、游戏接入GameCenter 指南(实现仿官方的成就提示)、游戏接入OpenFeint指南;

李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/535.html        ...
  • xiaominghimi
  • xiaominghimi
  • 2011年10月28日 13:17
  • 27724

LeetCode --- 45. Jump Game II

题目链接:Jump Game II Given an array of non-negative integers, you are initially positioned at the firs...
  • makuiyu
  • makuiyu
  • 2015年02月10日 08:59
  • 1082

iOS Game Center 登陆验证实现

出自:http://www.jianshu.com/p/66c23799af18 为了少走弯路,参考了: http://stackoverflow.com/questions/24621839...
  • chenya866
  • chenya866
  • 2016年11月04日 12:09
  • 1275

【LeetCode】Jump Game II 解题报告

【题目】 Given an array of non-negative integers, you are initially positioned at the first index o...
  • ljiabin
  • ljiabin
  • 2014年12月09日 17:17
  • 3588
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:App ID & Game Center - II (代码部分)
举报原因:
原因补充:

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