サーチ…


GameCenterリーダーボード

前提条件:

  1. Appleデベロッパーアカウント
  2. iTunesConnectを使用したGameCenterリーダーボードのセットアップ

GameCenterリーダーボードの設定:

  1. iTunesConnectにサインインする
  2. マイアプリに移動します。あなたのプロジェクト用のアプリケーションを作成し、次にフィーチャーに移動します
  3. ゲームセンターをクリック
  4. [リーダーボード]の横にあるプラス記号をクリックします。
  5. リーダーボードタイプにはシングルリーダーボードを選択してください。
  6. 参照用のリーダーボード参照名を作成します。
  7. スコアを報告するときにあなたのアプリが参照するためのリーダーボードIDを作成します。
  8. スコア形式を整数に設定する
  9. スコアの提出はベストスコアになります
  10. [ 言語の追加]をクリックし、エントリを入力します。

作成したLeaderboardIDをコピーして、Xcodeに頭を向ける。

Xcodeの操作

私たちが取り組む4つの機能があります。

  1. フレームワークのインポートとプロトコルの設定

  2. ユーザーがGameCenterにサインインしていることを確認する

  3. GameCenterにスコアを報告する

  4. リーダーボードの表示

  5. GKGameCenterControllerDelegate import GameKit GKGameCenterControllerDelegate import GameKit GKGameCenterControllerDelegate

  6. 今度は、ユーザーがGameCenterにサインインしているかどうか確認したい

func authenticateLocalPlayer() {
        
        let localPlayer = GKLocalPlayer.localPlayer()
        localPlayer.authenticateHandler = { (viewController, error) -> Void in
            
            if viewController != nil {
                //If the user is not signed in to GameCenter, we make them sign in
                let vc:UIViewController = self.view!.window!.rootViewController!
                vc.presentViewController(viewController!, animated: true, completion: nil)
                
            } else {
                
                //Do something here if you want
            }
        }
    }
  1. ユーザーがアプリを使用していて、突然ユーザーに新しい高得点がある場合は、以下の関数を呼び出して高得点を報告します。

以下の関数は、2つのパラメータを保持します。

文字列として定義され、iTunesConnectで作成したleaderboardIDを入力するために使用されるIdentifier

scoreのユーザーになりますintとして定義されてiTunesConnectに提出するスコア

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 {
                    
                    
                }
            })
        }
    }
  1. ユーザーがリーダーボードを見たい場合は、以下の関数を呼び出してください
//This function will show GameCenter leaderboards and Achievements if you call this function.
    func showGameCenter() {
        
        let gameCenterViewController = GKGameCenterViewController()
        gameCenterViewController.gameCenterDelegate = self
        
        let vc:UIViewController = self.view!.window!.rootViewController!
        vc.presentViewController(gameCenterViewController, animated: true, completion:nil)
        
    }
    
    //This function closes gameCenter after showing.
    func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController) {
        
        gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
        self.gameCenterAchievements.removeAll()
        
    }


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow