-4

아래 코드를 사용하여 내 게임에서 내 GameCenter 페이지를 만들었습니다. 그러나 iTunes Connect에서 만든 리더 보드를 내 코드에 연결할 수 없어서 리더 보드 페이지가 비어 있습니다. 내 코드에 Itunes Connect 리더 보드를 연결하려면 어떻게해야합니까? 그리고 리더 보드가 비어있는 것처럼 점수를 리더 보드에 배치하도록 앱을 만드는 방법은 무엇입니까? 여기 Itunes 연결 GameCenter 리더 보드에 연결 코드

내가 사용하는 코드입니다 :

override func viewDidAppear(animated: Bool) { 

    //check user is logged into GameCenter 
    var localPlayer = GKLocalPlayer.localPlayer() 

    localPlayer.authenticateHandler = {(viewController : UIViewController!, error : NSError!) -> Void in 

     if ((viewController) != nil) { 

      self.presentViewController(viewController, animated: true, completion: nil) 

     } else { 

      println((GKLocalPlayer.localPlayer().authenticated)) 
     } 

    } 

//display leaderboard 
func showLeaderboard() { 

    var gcViewController: GKGameCenterViewController = GKGameCenterViewController() 
    gcViewController.gameCenterDelegate = self 

    gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards 

    gcViewController.leaderboardIdentifier = "MyLeaderboard" 

    self.showViewController(gcViewController, sender: self) 
    self.navigationController?.pushViewController(gcViewController, animated: true) 

} 

//take leaderboard away 
func gameCenterViewControllerDidFinish(gcViewController: GKGameCenterViewController!) { 

    self.dismissViewControllerAnimated(true, completion: nil) 

} 

내가 응용 프로그램 내 아이튠즈 연결 리더를 연결하려면, 어떤 코드가 나는 리더 보드에 자신의 점수를 업로드 할 어떻게 사용합니까?

답변

1

첫째 클래스에 GKGameCenterControllerDelegate을 추가

class viewController: UIViewController, GKGameCenterControllerDelegate { 
... 
} 

하면 플레이어 인증을 사용하는 데 필요한 코드 :

func login() { 
    println("Game Center Login Called") 
    let localPlayer = GKLocalPlayer.localPlayer() 

    // Handle the authentication 
    localPlayer.authenticateHandler = {(Home: UIViewController!, error: NSError!) -> Void in 
     if Home != nil { 
      println("Authentication is being processed.") 
      self.presentViewController(Home, animated: true, completion: nil) 

     } else { 
      println("Player has been successfully authenticated.") 
     } 
    } 
} 

이것은 당신이 표시하기 위해 사용해야 할 코드가를 리더 보드 :

func showLeaderboard() { 

    var gcViewController: GKGameCenterViewController = GKGameCenterViewController() 
    gcViewController.gameCenterDelegate = self 

    gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards 

    gcViewController.leaderboardIdentifier = "YOUR_LEADERBOARD_ID" 
    self.showViewController(gcViewController, sender: self) 
    self.presentViewController(gcViewController, animated: true, completion: nil) 
} 

사용자가 '완료'를 탭하면이 코드가 필요합니다.

func gameCenterViewControllerDidFinish(gcViewController: GKGameCenterViewController!) 
{ 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

당신은 viewDidLoad 방법 인증 방법 login()를 호출 할 수 있습니다 : 사용자가 버튼

@IBAction func button(sender: AnyObject) { 

    showLeaderboard() 
} 

에 도청 때 제출하려면

override func viewDidLoad() { 
    super.viewDidLoad() 
login() 
... 
} 

이 리더 보드를보기 최고 점수 :

if GKLocalPlayer.localPlayer().authenticated { 
         println("I have submitted the score to Game Center") 
         let gkScore = GKScore(leaderboardIdentifier: "Best_Score") 
         gkScore.value = Int64(bestScore) 
         GKScore.reportScores([gkScore], withCompletionHandler: ({ (error: NSError!) -> Void in 
          if (error != nil) { 
           // handle error 
           println("Error: " + error.localizedDescription); 
          } else { 
           println("Score reported: \(gkScore.value)") 
          } 
         })) 
        } 
+0

이 코드에서 어디에서 iTunes Connect Leaderboard를 앱에 연결할 수 있습니까? 그리고이 경우 어디에서 사용자 점수를 리더 보드에 제출합니까? – tdh

+0

정확하게 내 대답을보세요 :' "YOUR_LEADERBOARD_ID"'. 점수 제출으로 코드를 업데이트했습니다. – Cesare

+0

정말 고마워요! – tdh

관련 문제