IOS GameKit
Введение
GameKit — это часто используемый фреймворк в iOS SDK. У него есть три ключевые возможности:
- Интерактивная игровая платформа Game Center,
- Функциональность P2P-связи между устройствами
- Голосовой чат в игре。
Шаги примера
1. При подключении к iTunes убедитесь, что у вас есть уникальный App ID. App ID нужен при обновлении bundle ID нашего приложения, а также для подписи кода в Xcode вместе с соответствующим provisioning profile.
2. Создайте новое приложение и обновите информацию о приложении. Подробнее можно узнать из документации по добавлению нового приложения.
3. Откройте зарегистрированное приложение и нажмите опцию Manage Game Center. После входа нажмите Enable Game Center, чтобы активировать Game Center. Затем настройте свои таблицы лидеров и достижения.
4. Следующий шаг включает работу с кодом и создание пользовательского интерфейса для нашего приложения.
5. Создайте приложение с одним представлением и введите идентификатор пакета.
6. Обновите ViewController.xib, как показано ниже.

7. Выберите файл проекта, затем выберите цель и затем добавьте 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:@"example"];
}
-(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
Вывод
Запустите приложение, вывод будет следующим:

Когда мы нажимаем "Показать таблицу лидеров", экран отображается следующим образом:

Когда мы нажимаем "Обновить счёт", счёт будет обновлён в нашей таблице лидеров, и мы получим сообщение, как показано ниже.
