iOS - GameKit
Gamekit 是一个为 iOS 应用程序提供排行榜、成就和更多功能的框架。 在本教程中,我们将解释添加排行榜和更新分数所涉及的步骤。
涉及的步骤
步骤 1 − 在 iTunes 连接中,确保您有一个唯一的 App ID,并且当我们使用 bundle ID 创建应用程序更新时,并使用相应的配置文件在 Xcode 中进行代码签名。
步骤 2 − 创建一个新的应用程序并更新应用程序信息。 您可以在 apple-add new apps 文档中了解更多相关信息。
步骤 3 − 在应用程序页面的 Manage Game Center 管理游戏中心中设置排行榜,添加单个排行榜并提供排行榜 ID 和得分类型。 在这里,我们将排行榜 ID 设为 w3schools。
步骤 4 − 接下来的步骤与处理代码和为我们的应用程序创建 UI 有关。
步骤 5 − 创建一个 single view application 单视图应用程序并输入 bundle identifier 捆绑标识符是 iTunes connect 连接中指定的标识符。
步骤 6 − 如下所示更新 ViewController.xib −
步骤 7 − 选择您的项目文件,然后选择targets,然后添加GameKit.framework。
步骤 8 − 为我们添加的按钮创建 IBActions。
步骤 9 − 更新 ViewController.h 文件如下 −
实例
#import <UIKit/UIKit.h>
#import <GameKit/GameKit.h>
@interface ViewController : UIViewController
<GKLeaderboardViewControllerDelegate>
-(IBAction)updateScore:(id)sender;
-(IBAction)showLeaderBoard:(id)sender;
@end
步骤 10 − 更新 ViewController.m 如下 −
实例
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
if([GKLocalPlayer localPlayer].authenticated == NO) {
[[GKLocalPlayer localPlayer]
authenticateWithCompletionHandler:^(NSError *error) {
NSLog(@"Error%@",error);
}];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void) updateScore: (int64_t) score
forLeaderboardID: (NSString*) category {
GKScore *scoreObj = [[GKScore alloc]
initWithCategory:category];
scoreObj.value = score;
scoreObj.context = 0;
[scoreObj reportScoreWithCompletionHandler:^(NSError *error) {
// Completion code can be added here
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:nil message:@"Score Updated Succesfully"
delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
}];
}
-(IBAction)updateScore:(id)sender {
[self updateScore:200 forLeaderboardID:@"tutorialsPoint"];
}
-(IBAction)showLeaderBoard:(id)sender {
GKLeaderboardViewController *leaderboardViewController =
[[GKLeaderboardViewController alloc] init];
leaderboardViewController.leaderboardDelegate = self;
[self presentModalViewController:
leaderboardViewController animated:YES];
}
#pragma mark - Gamekit delegates
- (void)leaderboardViewControllerDidFinish:
(GKLeaderboardViewController *)viewController {
[self dismissModalViewControllerAnimated:YES];
}
@end
输出
当我们运行应用程序时,我们会得到以下输出 −
当我们点击 "show leader board" 显示排行榜时,我们会得到一个类似下面的画面 −
当我们点击 "update score" 更新分数时,分数将更新到我们的排行榜,我们将收到如下所示的警报 −