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 −

iOS 教程

步骤 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

输出

当我们运行应用程序时,我们会得到以下输出 −

iOS 教程

当我们点击 "show leader board" 显示排行榜时,我们会得到一个类似下面的画面 −

iOS 教程

当我们点击 "update score" 更新分数时,分数将更新到我们的排行榜,我们将收到如下所示的警报 −

iOS 教程