`GKScore` と `GKLeaderboard` のプロパティやメソッドのメモ

いろいろ学習してきた内容が溜まってきたので消化すべくアプリを考え中。でもまだまだ学習が足りない部分があるので頑張ろう。。

GKScore

リーダーボードのスコアを扱うためのクラス。リーダーボードから渡されるスコアのクラスであり、リーダーボードにスコア送信するときに使用するクラスでもある。

  • @property(nonatomic, assign) int64_t value|スコアの値
  • @property(nonatomic, readonly, retain) NSString *formattedValue|スコアをフォーマットするための文字列。読み込み専用。
  • @property(nonatomic, retain) NSString *category|リーダーボードのカテゴリIDのプロパティ。必須。
  • @property(nonatomic, assign) uint64_t context __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0)|えーとこれは何だろう?よくわからない。「optional additional context that allows a game to store and retrieve additional data associated with the store. Default value of zero is returned if no value is set.」というコメントが付いてるけど具体的にどう使うのだろう。。
  • @property(nonatomic, readonly, retain) NSDate *date|スコアが記録された日付。読み込み専用。
  • @property(nonatomic, readonly, retain) NSString *playerID|そのスコアがどのプレイヤーのものか。読み込み専用。
  • @property(nonatomic, readonly, assign) NSInteger rank|スコアのランク。リーダーボードから返されるスコアにのみ含まれる。読み込み専用。
  • @property(nonatomic, assign) BOOL shouldSetDefaultLeaderboard __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0)|よくわかんないっす。
  • - (id)initWithCategory:(NSString *)category|category はリーダーボードのカテゴリIDを指定して、GKScoreを初期化する
  • - (void)reportScoreWithCompletionHandler:(void(^)(NSError *error))completionHandler|リーダーボードにスコアを送信するメソッド

GKLeaderboard

リーダーボードを扱うためのクラス。

  • @property(nonatomic, assign) GKLeaderboardTimeScope timeScope|対象の時間の範囲を指定するプロパティ。GKLeaderboardTimeScopeToday (本日の記録), GKLeaderboardTimeScopeWeek (週間の記録), GKLeaderboardTimeScopeAllTime (全期間の記録) のいずれかの列挙子を指定する
  • @property(nonatomic, assign) GKLeaderboardPlayerScope playerScope|比較対象のプレーヤーの範囲を指定するプロパティ。GKLeaderboardPlayerScopeGlobal (すべてのプレイヤー), GKLeaderboardsPlayerScopeFriendsOnly (友達のみ) のいずれかの列挙子を指定する。initWithPlayerIDs: イニシャライザで初期化した場合は受け付けない。
  • @property(nonatomic, retain) NSString *category|リーダーボードのカテゴリIDを指定する。
  • @property(nonatomic, readonly, retain) NSString *title|カテゴリのタイトル。読み込み専用。
  • @property(nonatomic, assign) NSRange range|対象のランクの範囲を指定するプロパティ。initWithPlayerIDs: イニシャライザで初期化した場合は受け付けない。
  • @property(nonatomic, readonly, retain) NSArray *scores|リーダーボードに読み込まれたスコアを取得する GKScore の配列へのプロパティ。読み込み専用。loadScoresなんとかメソッドによりデータを受け取らなければ使用できない。
  • @property(nonatomic, readonly, assign) NSUInteger maxRange|リーダーボードのランクの最大範囲を取得する。loadScores なんとかメソッドによりデータを受け取らなければ使用できない。読み込み専用。
  • @property(nonatomic, readonly, retain) GKScore *localPlayerScore|ローカルプレーヤーのスコア。読み込み専用
  • @property(readonly, getter=isLoading) BOOL loading|ローディング中かどうか。読み込み専用
  • - (id)initrange 1-10, Global, ALLTime のスコープをセットしてリーダーボードを初期化する。
  • - (id)initWithPlayerIDs:(NSArray *)playerIDs|フレンドリストなどのplayerIDsを使用して初期化する。このメソッドで初期化した場合は timeScope は変更できるけど、rangeplayer のスコープは変更できないよ。
  • - (void)loadScoresWithCompletionHandler:(void(^)(NSArray *scores, NSError *error))completionHandler|GameCenterからスコアをロードする。ロード完了後にハンドラをコールする。ハンドラには GKScore の配列が渡される。
  • + (void)loadCategoriesWithCompletionHandler:(void(^)(NSArray *categories, NSArray *titles, NSError *error))completionHandler|GameCenterからカテゴリをロードするスタティックメソッド。ロード完了後にハンドラをコールする。ハンドラには カテゴリID および カテゴリ名 の NSString* の配列が渡される。
  • + (void)setDefaultLeaderboard:(NSString *)categoryID withCompletionHandler:(void(^)(NSError *error))completionHandler __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0)|例のごとくわからなかった(´;ω;`)

GKLeaderboardViewControllerGKAchievementViewController

Appleが用意しているリーダーボードやアチーブメントの画面を利用するための UINavigationController のサブクラス。これを使っているアプリはかなりたくさんあるね。楽だろうし、ユーザーにとっても慣れているインターフェイスかと思われるので、特にこだわりが無ければ基本的にはこれらを使ってリーダーボードの記録やアチーブメントの進捗を表示すればいいと思う。

Share
関連記事