前言
要求接入GameCenter的排行榜和成就。
GameCenter 是苹果推出的一个社交平台,
它主要提供了以下几个功能:
- 排行榜
- 成就
- 挑战
而且,苹果同时提供了GameKit框架来让GameCenter更易集成。
可能是因为GameCenter的热度过去了吧,相关的东西都比较早期。
整理总结了一下,希望对他人有所帮助。
我的环境:
mac - XCode 8.3 - cocos2d-x lua
公共的处理
1. 配置 iTunes Connect 排行榜与成就的位置。
登录iTunes Connect, 找到要处理的APP。
选择 功能->GameCenter
可以看到三个大项:
- 移动群组
- 排行榜
- 成就
2. 添加GameKit框架
打开项目工程,将 Capabilities 的 GameCenter 打开。
这样,XCode就会将GameKit框架加到我们的工程中。
3. 登录GameCenter
登录GameCenter: 【这个步骤在我们加载完游戏时进行即可】
-(void) authenticateLocalPlayer {
// 获取本地用户
GKLocalPlayer* localPlayer = [GKLocalPlayer localPlayer];
// 认证登录
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {
[self setLastError:error];
if (localPlayer.authenticated) { // 本地用户已经登录
_gameCenterFeaturesEnabled = YES; // 此变量是判断是否已经登录上GameCenter
} else if(viewController) { // 没有用户,弹出登录界面
[self presentViewController:viewController];
} else { // 没有用户,并且没有登录界面
_gameCenterFeaturesEnabled = NO;
}
};
}
4. 关于lua调用object-c
因为我的环境是 cocos2d-x lua,所以,用通过lua来调用object-c。
cocos2d-x其实已经有相关的调用结构 —— LuaObjcBridge, 可以直接用 callStaticMethod来调用:
LuaObjcBridge.callStaticMethod(methodName className,args)
5. GameKit辅助处理类
GameKitHelper.h:
#import <GameKit/GameKit.h>
#import "cocos2d.h"
// 方便lua调用
#include "CCLuaEngine.h"
#include "CCLuaBridge.h"
@interface GameKitHelper : NSObject
// 处理错误
@property (nonatomic, readonly) NSError* lastError;
// 初始化
+ (id) sharedGameKitHelper;
// Player authentication, inf