IOS GameKit
Introducción
GameKit es un framework común en el SDK de iOS. Sus funciones principales son 3:
- Plataforma de juegos interactivos Game Center,
- Función de comunicación de dispositivos P2P
- In-Game Voice.
Pasos del ejemplo
1. Al vincular iTunes, asegúrate de tener un App ID único (unique App ID). El App ID es necesario cuando actualizamos el bundle ID de nuestra aplicación y en la firma de código de Xcode junto con el perfil de aprovisionamiento correspondiente.
2. Crea una nueva aplicación y actualiza la información de la aplicación. Puedes obtener más información en el documento de adición de nuevas aplicaciones.
3. Abre la aplicación que hayas creado y haz clic en la opción Manage Game Center. Después de entrar, haz clic en Enable Game Center para activar tu Game Center. Luego configura tu Leaderboard y tus Achievements.
4. El siguiente paso implica manejar el código y crear la interfaz de usuario para nuestra aplicación.
5. Crea una aplicación de vista única (single view application) e ingresa el bundle identifier.
6. Actualiza ViewController.xib, como se muestra a continuación

7. Selecciona el archivo del proyecto, luego el destino (target) y agrega GameKit.framework
8. Crea IBActions para los botones añadidos
9. Actualiza el archivo ViewController.h, como se muestra a continuación
#import <UIKit/UIKit.h> #import <GameKit/GameKit.h> @interface ViewController : UIViewController <GKLeaderboardViewControllerDelegate> -(IBAction)updateScore:(id)sender; -(IBAction)showLeaderBoard:(id)sender; @end
10. Actualiza ViewController.m, como se muestra a continuación
#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:@"ejemplo"];
}
-(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
Salida
Ejecuta la aplicación, el resultado de salida es el siguiente

Cuando hacemos clic en Mostrar clasificación (Show Leaderboard), la pantalla muestra lo siguiente:

Cuando hacemos clic en Actualizar puntuación, la puntuación se actualizará en nuestra clasificación, y recibiremos un mensaje como se muestra a continuación
