How to open GameCenter in tvOS
Asked Answered
I

3

6

How can I open a game center leaderboard in tvOS? I've used this code for my iPhone games, 'leaderboardIdentifier' aren't available on tvOS.

I've planned to use the same leaderboard on the AppleTV (it will be the same game).

Many thanks for your help, Stefan

    @IBAction func handleGameCenter(sender: UIButton) {
        let gcViewController = GKGameCenterViewController()
        gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards
        gcViewController.leaderboardIdentifier = gamePrefix + "Leaderboard"
        gcViewController.gameCenterDelegate = self

        // Show leaderboard
        self.presentViewController(gcViewController, animated: true, completion: nil)
    }

    func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController) {
        gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
    }
Indubitability answered 24/9, 2015 at 21:9 Comment(0)
D
13

I also had the problem with "No data available" screen but finally solved it. This worked for me to open gamecenter leaderboard on tvOS:

  1. open Assets.xcassets (same file where you set your app icon/launchscreen)
  2. right click in the panel with appicon/launchsreen and select Game Center -> New Apple TV Leaderboard
  3. add graphics for the new leaderboard
  4. while leaderboard is selected in assets file on the right side panel find Identifier field and put identifier of your leaderboard there
  5. use this code to open the leaderboard:

    GKGameCenterViewController *gcViewController = [[GKGameCenterViewController alloc] init];
    gcViewController.gameCenterDelegate = self;
    [self presentViewController:gcViewController animated:YES completion:nil];
    
Dehorn answered 20/10, 2015 at 18:7 Comment(1)
Perfect answer :)Burger
C
1

Just this seems to work:

GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil)
{
    gameCenterController.gameCenterDelegate = self;
    [self presentViewController: gameCenterController animated: YES completion:nil];
}
Callihan answered 7/10, 2015 at 20:53 Comment(0)
P
1

.viewState and .leaderboardIdentifier are not available on tvOS, so you can open the GC controller with that code, but the page will say "No data available".

Peekaboo answered 10/10, 2015 at 6:40 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.