2015-12-22 30 views
5

Şu anda iOS sistemimde çalışmakta olan ama TVOS hedefinde çalışmayan bir Oyun Merkezi var.TVOS'daki Oyun Merkezi görünmüyor

Zaten Afiş görüntüleri eklendi ve burada Xcode tanımlayıcı yerleştirdiğiniz:

enter image description here

Bu benim oyuncu leaderboard'unuz getirmek ve başlatmaya kullanıyorum sınıftır. Bu GameKitHelper.swift deniyor:

import UIKit 
import Foundation 
import GameKit 

let PresentAuthenticationViewController = "PresentAuthenticationViewController" 

class GameKitHelper: NSObject { 

    static let sharedInstance = GameKitHelper() 


    var authenticationViewController: UIViewController? 
    var gameCenterEnabled = false 

    func authenticateLocalPlayer() { 

    //1 
    let localPlayer = GKLocalPlayer() 
    localPlayer.authenticateHandler = {(viewController, error) in 

     if viewController != nil { 
      //2 
      self.authenticationViewController = viewController 

       NSNotificationCenter.defaultCenter().postNotificationName(PresentAuthenticationViewController, object: self) 
     } 
    else if error == nil { 
      //3 
      self.gameCenterEnabled = true 
     } 
    } 

} 

func reportAchievements(achievements: [GKAchievement], errorHandler: ((NSError?)->Void)? = nil) { 
    guard gameCenterEnabled else { 
     return 
    } 

    GKAchievement.reportAchievements(achievements, withCompletionHandler: errorHandler) 
} 

func showGKGameCenterViewController(viewController: UIViewController) { 
    guard gameCenterEnabled else { 
     return 
    } 

    //1 
    let gameCenterViewController = GKGameCenterViewController() 

    //2 
    gameCenterViewController.gameCenterDelegate = self 

    //3 
    viewController.presentViewController(gameCenterViewController, animated: true, completion: nil) 
} 

    func saveHighScore(identifier: String, score: Int) { 

    if (GKLocalPlayer.localPlayer().authenticated) { 

     let scoreReporter = GKScore(leaderboardIdentifier: identifier) 
     scoreReporter.value = Int64(score) 

     let scoreArray:[GKScore] = [scoreReporter] 

     GKScore.reportScores(scoreArray, withCompletionHandler: { 

      error -> Void in 

      if (error != nil) { 

       print("error") 
      } 
      else { 

       print("Posted score of \(score)") 
      } 
     }) 
    } 
    } 
} 

extension GameKitHelper: GKGameCenterControllerDelegate { 
    func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController) { 
    gameCenterViewController.dismissViewControllerAnimated(true, completion: nil) 
} 
} 

NavigationController sınıfı:

override func viewDidLoad() { 
    super.viewDidLoad() 

    NSNotificationCenter.defaultCenter().addObserver(self, 
              selector: Selector("showAuthenticationViewController"), 
               name: PresentAuthenticationViewController, 
               object: nil) 
    GameKitHelper.sharedInstance.authenticateLocalPlayer() 
} 

func showAuthenticationViewController() { 
    let gameKitHelper = GameKitHelper.sharedInstance 

    if let authenticationViewController = gameKitHelper.authenticationViewController { 
     topViewController?.presentViewController(authenticationViewController, 
               animated: true, 
               completion: nil) 
    } 
    } 


    deinit { 
     NSNotificationCenter.defaultCenter().removeObserver(self) 
    } 
+0

Biraz daha fazla bilgi ekleyebilir misiniz? Kullanıcı başlatılmasının başarılı olduğunu ve gameCenterEnabled'ın doğru olduğunu kontrol ettiniz mi? – Stefan

+0

@Stefan 'func authenticateLocalPlayer()' kontrol edin. Ayrıca, bazı Game Center kodlarını çalıştıran başka bir sınıfım var, ancak gönderdiğim sınıfın ana sınıf olduğundan eminim. Dediğim gibi, bu iOS'de gayet iyi çalışıyor. Hatta yüksek puanlar yayınlayabiliyorum, ancak TVOS'ta değil. – Paul

cevap

0

uygulamanızın varlık katalogda bir "Apple TV Dashboard Image" olduğundan emin olun. Pano resmi, saydamlıkla birlikte 923x150 olmalı ve kullanıcı onu seçemediği için katmanlaştırılmaya ihtiyaç duymaz.

tvOS Human Interface Guidelines, gösterge tablosu resminin isteğe bağlı olduğunu iddia ediyor, ancak benim deneyimim içinde GKGameCenterViewController deneyiminiz yoksa, görüntülenmiyor.