J'ai tout fait correctement en ce qui concerne iTunes Connect, mais quand je démarre l'application, il ne s'authentifie pas, et quand j'appuie sur mon bouton Gamecenter, il me donne un message "Gamecenter n'est pas disponible, utilisateur non connecté » code:SpriteKit - Impossible de se connecter à Gamecenter
ViewController:
import UIKit
import SpriteKit
import GameKit
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
authenticateLocalPlayer()
}
//initiate gamecenter
func authenticateLocalPlayer(){
print("Starting..1")
let localPlayer = GKLocalPlayer.localPlayer()
print("Starting..2")
localPlayer.authenticateHandler = {(viewController, error) -> Void in
print("Starting..3")
if (viewController != nil) {
print("Not signed in. Authenticating now")
var vc = self.view?.window?.rootViewController
vc?.presentViewController(viewController!, animated: true, completion: nil)
}
else {
print((GKLocalPlayer.localPlayer().authenticated))
}
}
}
GameScene:
import SpriteKit
import iAd
import GameKit
class GameScene: SKScene, SKPhysicsContactDelegate, ADBannerViewDelegate, GKGameCenterControllerDelegate {
func saveHighscore(score:Int) {
//check if user is signed in
if GKLocalPlayer.localPlayer().authenticated {
let scoreReporter = GKScore(leaderboardIdentifier: "CC_Leaderboard_1") //leaderboard id here
scoreReporter.value = Int64(score) //score variable here (same as above)
let scoreArray: [GKScore] = [scoreReporter]
GKScore.reportScores(scoreArray, withCompletionHandler: {(error : NSError?) -> Void in
if error != nil {
print("error") }
})
}
}
//shows leaderboard screen
func showLeader() {
var vc = self.view?.window?.rootViewController
var gc = GKGameCenterViewController()
gc.gameCenterDelegate = self
vc?.presentViewController(gc, animated: true, completion: nil)
}
//hides leaderboard screen
func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController!)
{
gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
}
}
J'ai aussi essayé de l'authentification à l'intérieur GameScene
mais cela n'a pas fonctionné non plus.
Edit:
//initiate gamecenter
func authenticateLocalPlayer(){
print("Gamecenter..1")
let localPlayer = GKLocalPlayer.localPlayer()
print("Gamecenter..2")
localPlayer.authenticateHandler = {(viewController, error) -> Void in
print("Gamecenter..3")
if (viewController != nil) {
print("Not signed in. Authenticating now")
var vc = self.view?.window?.rootViewController
vc?.presentViewController(viewController!, animated: true, completion: nil)
}
else {
print((GKLocalPlayer.localPlayer().authenticated))
}
}
}
Jetez un oeil à la print
déclarations à la fonction ci-dessus, "Gamecenter..3" jamais faire imprimer.
Edit 2:
Le problème lui-même résolu quand j'ai signé sur GameCenter. (Quelle stupidité ce genre de choses)
Avez-vous activé la section Game Center dans Capabilities dans Xcode? – Adam
Oui, s'il vous plaît jeter un oeil à mon post édité. – Abdou023
En mode bac à sable, si vous refusez de vous connecter 5 fois, vous ne pourrez plus vous reconnecter tant que vous n'aurez pas supprimé vos informations d'identification dans les paramètres du système de jeu, puis démarrez l'application et reconnectez-vous au – Knight0fDragon