MILLEN BOX

音楽好きの組み込みソフトエンジニアによるプログラミング(主にiOSアプリ開発)の勉強の記録

SwiftでのGameCenterはじめの一歩。ログインを簡単に行う [Game Center初心者向け] [Swift1.2]

高橋名人もびっくりの連打アプリをGame Centerに対応させようとしてみましたが、私の知識と経験では、Webから得た情報の理解に苦労しています。

その中で以下のページが一番シンプルに「ログインについて」のみ書かれていて分かりやすかったです。

qiita.com

ただ使用言語はObjective Cです。
今回はこれをSwiftに書き換えてみました。

準備

  1. リーダーボードの設定などはiTunes connectであらかじめ済ませておく。 参考ページ
    iOS - Game Center機能を実装する - Qiita

  2. GameKitフレームワークをプロジェクトに追加

  3. import GameKitを追加

ログイン認証

ログインしているかどうかの確認をするauthenticateLocalPlayerを作成して、ViewDidLoad で読み込ませる。

class ViewController: UIViewController {

/**
 * 画面を読み込む際の処理
 */        
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.authenticateLocalPlayer()        
        
    }

/**
 * GameCenterにログインしているか確認処理
 * ログインしていなければログイン画面を表示
 */    
    func authenticateLocalPlayer() {
        let player = GKLocalPlayer.localPlayer()
        player.authenticateHandler = {(viewController, error) -> Void in
            if viewController != nil {
                self.presentViewController(viewController, animated: true, completion: nil)
            }
        }      
    }
}

これでログイン動作はすることができました。
しかしここからが問題。今回はViewControllerに実装しましたが、そうなるとログインされるタイミングが管理しきれません。通常は、AppDelegateなどでアプリが非アクティブから復帰した際にもきちんとログインできるようにしなければなりません。が、まだ上手く実装できていません。
スコアの送信なども実装せねばならないし、道のりはなかなか長いです。