2014年9月10日水曜日

【Objective-C】Game Centerに対応したアプリの作り方(実装編)


iTunes Connect側の設定ができていない場合は下記をはじめにお読みください。
【Objective-C】Game Centerに対応したアプリの作り方(準備編)


簡単に手順を説明します。(Appleの公式のガイドも参照してください)

1.Game Centerへのログイン処理
2.スコアの送信
3.リーダーボードの参照

大きくわけて、以上の3つになります。

1に関してはアプリ起動時の最初の処理で実装します。
/**
 * GameCenterにログインしているか確認処理
 * ログインしていなければログイン画面を表示
 */
- (void)authenticateLocalPlayer
{
    GKLocalPlayer* player = [GKLocalPlayer localPlayer];
    player.authenticateHandler = ^(UIViewController* ui, NSError* error )
    {
        if( nil != ui )
        {
            [self presentViewController:ui animated:YES completion:nil];
        }
        
    };

}

これで無事画面上部にGame Centerへのログインが表示されます。

2に関しては、ボードのスコアタイプごとに実装方法は変わってきます。
Elapsed Time To The Hundredth of a secondを例にして説明していきます。

00:00:00.00形式のことです。
スコアは時分秒の部分はすべて秒数に変換します。
_gameScore = [NSString stringWithFormat:@"%d.%d" ,((hour * 3600) + (minute * 60) + second) ,miliSec].doubleValue * 100;

そして、ミリ秒の部分は小数点として結合します。
例えば 00:05:10:22 ▶︎ 310.22とします。
これを100倍した、31022をスコアに送信すると仕様になっているようです。
スコアは、下記を実装することにより送信可能です。

// GameCenter スコア送信
        if ([GKLocalPlayer localPlayer].isAuthenticated) {
            GKScore* score = [[GKScore alloc] initWithLeaderboardIdentifier:@"Stage1"];
            score.value = _gameScore;
            [GKScore reportScores:@[score] withCompletionHandler:^(NSError *error) {
                if (error) {
                    // エラーの場合
                }
            }];
        }


3に関しては、下記を実装して実施します。
/**
 * リーダーボードで完了タップ時の処理
 * 前の画面に戻る
 */
- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController
{
    [self dismissViewControllerAnimated:YES completion:nil];
}


- (IBAction)btnRanking:(id)sender {
    GKGameCenterViewController *gcView = [GKGameCenterViewController new];
    if (gcView != nil)
    {
        gcView.gameCenterDelegate = self;
        gcView.viewState = GKGameCenterViewControllerStateLeaderboards;
        [self presentViewController:gcView animated:YES completion:nil];
    }
}

ボタンを用意して、ボタンが押下されときのイベントに紐付けします。これでランキングを見ることができます。
ちなみに、実機テストでは、サンドボックスモードにしないと、Game Centerにログインができないので要注意です。iPhoneの設定から変更できます。

すでにアプリが出来上がっている場合は、準備編から実装編あわせても、30分もかからずに実装することができると思います。

0 件のコメント:

コメントを投稿