Tabs

iPhone&Androidのアプリ制作・デザイン

*

Xcode6 GameCenter 実装

      2016/06/03


Xcode6(iOS7以上)でのGameCenter実装
検索であまり見つからなかったので、シェア( ゚∀゚)・;”.、

▽まずはGameCenterにログイン(アプリ内)

AppDelegate.h
#import <GameKit/GameKit.h>をインポート

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    //gamecenterのプレイヤーを取得
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){};

    return YES;
}

▽スコアを送信する前に下ごしらえ

ViewController.h

#import <GameKit/GameKit.h>
@interface ViewController : UIViewController <GKGameCenterControllerDelegate> {

}

ViewController.m


// ストーリボード表示
- (void)GamecenterInit {
 GKGameCenterViewController *leaderboardController = [GKGameCenterViewController new];
 if (nil != leaderboardController) {
    leaderboardController.gameCenterDelegate = self;
    leaderboardController.viewState = GKGameCenterViewControllerStateLeaderboards;
    [self presentViewController:leaderboardController animated:YES completion:nil];
 }

}


// ストーリボードを閉じる際に必要なメソッド
// GKLeaderboardViewControllerのDelegate
-(void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController {
    [self dismissViewControllerAnimated:YES completion:nil];
}
// GKAchievementViewControllerのDelegate
-(void)achievementViewControllerDidFinish:(GKGameCenterViewController *)viewController {
    [self dismissViewControllerAnimated:YES completion:nil];
}

// GameCenter
-(void)submitScore:(int)score forCategory:(NSString*)category {
 GKScore *scoreReporter = [[GKScore alloc] initWithLeaderboardIdentifier:category];
 scoreReporter.value = score;
 [GKScore reportScores:@[scoreReporter] withCompletionHandler:^(NSError *error) {
 if (error) {
 /* エラー処理 */
 NSLog(@"書き込めませんでした");
 }
 }];
}

▽ストーリーボード表示
表示する為のボタン(メソッド)に以下をコピペ

[self GamecenterInit];

▽スコアを送る方法
お好きなタイミングで(ゲーム終了とかで)下の行を添えるだけ!

// ゲームセンターへ通知
[self submitScore:755
      forCategory:@"iTunesConnectで付けたID"];

注意:例として代入してある 755 の箇所は整数のみ

おやくにたてたら幸いです.。゚+.(・∀・)゚+.゚
良いねとかコメントもらえると励みになります☆


 - Begin

Comment

  1. ryu より:

    すみません。
    ゲームセンターへ通知のiTunesConnectで付けたIDとは何を指すのでしょうか?

    • the96x より:

      どうも初めまして

      iTunesConnectでアプリの情報を登録ををしますよね?
      Gamecenterで使う為のリーダーボードを作る時に「LeaderboardID」というのを登録します。
      そのIDのことです。

  関連記事

no image
タッチイベント:有効・無効

// タッチイベントを有効にしたい場合の処理 [[UIApplication s …

eyechatch_xcode_tips-300x300
ボタンに画像(背景)を指定する

// ボタンのサイズを指定する UIButton *startBtn = [[U …

eyechatch_xcode_tips-300x300
LaunchImage 関連の設定

▼アプリ起動時のスプラッシュ画面 通常はチラっと一瞬だけ表示されるスプラッシュ画 …

eyechatch_xcode_tips-300x300
負の数を絶対数へ変換 abs

負の数を自然数(マイナスを含まない数字)にしたくて、「Xcode 自然数 変換」 …

eyechatch_xcode_tips-300x300
経過時間を算出する

まず比較する為の時刻を予めローカルに保存するために NSUserDefaults …

no image
for文の便利な使い方

for文を使って繰り返し実行させる場合、基本的には数値を使ってループさせます。 …

eyechatch_xcode_tips-300x300
.selected

インスタンス名.selected で BOOLを宣言せずにボタンのON/OFF状 …

eyechatch_xcode_tips-300x300
UIViewの背景画像をフィットさせたい

UIViewは(UIImageViewとは違い)背景画像のサイズをフィットする機 …

eyechatch_xcode_tips-300x300
テキストの文字間を詰める

UILabelなどで文字間を詰める(カーニング)したい時がちょいちょいあると思い …

no image
UIImageViewにボタンを貼りたい場合

タイトル画面などを作りたい場合、UIImageViewを使用して背景などを作るこ …