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

gamekitInterface

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

gamekit_Output1

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

gamekit_Output2

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

gamekit_Output3

Otras extensiones