Search code examples
iosios7sprite-kitgame-center

How to show leaderboard in iOS 7


I am using sprite-kit and targeted iOS 7. I want to show leaderboard with button in my MenuScene.

my helper method codes.

#import "GameKitHelper.h"

NSString *const PresentAuthenticationViewController =
@"present_authentication_view_controller";

@interface GameKitHelper()<GKGameCenterControllerDelegate>
@end

@implementation GameKitHelper {
    BOOL _enableGameCenter;
}

+ (instancetype)sharedGameKitHelper
{
    static GameKitHelper *sharedGameKitHelper;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedGameKitHelper = [[GameKitHelper alloc] init];
    });
    return sharedGameKitHelper;
}

- (id)init
{
    self = [super init];
    if (self) {
        _enableGameCenter = YES;
    }
    return self;
}


- (void)showGKGameCenterViewController:
(UIViewController *)viewController
{
    if (!_enableGameCenter) {
        NSLog(@"Local play is not authenticated");
    }
    GKGameCenterViewController *gameCenterViewController =
    [[GKGameCenterViewController alloc] init];
    gameCenterViewController.gameCenterDelegate = self;
    gameCenterViewController.viewState =
    GKGameCenterViewControllerStateAchievements;
    [viewController presentViewController:gameCenterViewController
                                 animated:YES
                               completion:nil];
}

I want to Leaderboard Button in this class.

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];
    if ([node.name isEqualToString:@"start"]) {
        MyScene *myScene = [MyScene sceneWithSize:self.size];
        [self.view presentScene:myScene transition:[SKTransition pushWithDirection:SKTransitionDirectionLeft duration:0.5]];
    }
    if ([node.name isEqualToString:@"gameCenter"]) {
        //HERE MY LEADERBOARD BUTTON ACTION
        //I don't know what i write here...
   {
}

I tried so much methods but these working in iOS 6, I targeted iOS 7. I tried this: [[GameKitHelper sharedGameKitHelper] showGKGameCenterViewController:self]; Xcode says for self Incompatible pointer types sending 'GameMenuScene *' to parameter of type 'UIViewController *'


Solution

  • Andrey is right. gameKitHelper means [gameKitHelper sharedGameKitHelper]. like this example

    if ([node.name isEqualToString:@"gameCenter"]) {
            UIViewController *vc = self.view.window.rootViewController;
            [[GameKitHelper sharedGameKitHelper] showGKGameCenterViewController:vc];
        }
    

    Keep coding :)