दिखा रहा है वर्तमान में मेरे पास आईओएस लक्ष्य में काम कर रहे गेम सेंटर हैं, लेकिन टीवीओएस लक्ष्य में काम नहीं कर रहे हैं।टीवीओएस में गेम सेंटर
मैं पहले से ही लीडरबोर्ड छवियों जोड़ा गया है और यहां Xcode में पहचानकर्ता दिए हैं:
इस वर्ग कि मैं लीडरबोर्ड ऊपर लाने और खिलाड़ी आरंभ करने के लिए उपयोग कर रहा हूँ है। यह GameKitHelper.swift कहा जाता है:
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 वर्ग:
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)
}
क्या आप थोड़ा और जानकारी जोड़ सकते हैं? क्या आपने जांच की है कि उपयोगकर्ता प्रारंभिकता सफल रही थी और gameCenterEnabled सत्य है? – Stefan
@Stefan 'func प्रमाणीकरण लोकलप्लेयर()' की जांच करें। इसके अलावा, मेरे पास एक और कक्षा है जो कुछ गेम सेंटर कोड चलाती है, लेकिन मुझे पूरा यकीन है कि मैंने जो कक्षा पोस्ट की है वह मुख्य वर्ग है। जैसे मैंने कहा, यह आईओएस में ठीक काम करता है। मैं इसे उच्च स्कोर पोस्ट करने में भी सक्षम हूं, लेकिन टीवीओएस पर नहीं। – Paul