2014年10月04日

iTunes 対応 (5) | いいかげん GameCenter 実装しようよ。ユーザー認証編

さあ、GameCenter 実装に向けての予習もようやく終わりですかね?
ま、まだまだなんか勉強しなきゃいけない感満載ですが、ひとまず先に進みましょうね♪


大昔にやろうとしたチェックリストに戻ってみよう
さて、だいぶ前、iTunes 編の初回ですかね?チェックリストに従って行こうとしてたんですが、挫折したんですよね。そう言えば。
なんで、ここでそのチェックリストに戻ってみようかと思います。(日本語版は無いみたい?)

まず一番に出てくるのは、"authenticate the local player"。
という事なんで、GameCenter を使うローカルユーザーの認証ですかね?
その辺をまず見て行きましょう。

言語の整理としては、"Local Player" っていうのが、デバイスで現在サインインしてるユーザーって事らしい。
Screen Shot 2014-10-01 at 5.03.24 PM.png

さて、そのユーザー認証。最近やってた Objective-C の勉強時に、アップルからのサンプルコードを見つけたので、その辺を上手く再利用しながら(ま、コピペです。簡単に言うと。)実装をしてみようかしら。


ユーザー認証して "Local Player" を確定。の前にその為のコードをGet!
サンプルコードだけど、"iOS Developer Library" の Sample Code から。
devCenter2.png
溺れそうなほどたくさんのサンプルコードが出てくるので、"GameKit" でサーチ。
CodeSample.png
で、出てくる "GKAuthenntication" のサンプル をみてみよー!
ブラウザでも見れるけど、左上の "Download Sample Code" からコードをダウンロードした方が便利かな?
Download.png


ユーザー認証の為のコードをXCode側に実装!
さていよいよ実装(コピペ)の本番ですが、またまず入れ物から準備しましょうかね。
今回は、"GameCenterPlugin" として ”PluginYG" の下にファイルを作りました。
Screen Shot 2014-10-01 at 7.16.34 PM.png
で、さっきダウンロードしたサンプルの "GKAuthenticationAppDelegate.m/h" から必要そうなトコだけコピーして来ましょうね。
っと思ってたんですが、なんか結局いろいろ変えちゃったなぁ〜。
ちょっと、一旦解説をしてみますね。

ヘッダはこんな感じなんだけど、元々あったサンプルから、AppDeligate 関連の処理とプロパティをカット。
Screen Shot 2014-10-02 at 3.02.42 PM.png
でコードの方だけど、まずこれまでみたいな Unity からの呼び出し部分。
Screen Shot 2014-10-02 at 3.03.13 PM.png
なんか、正直どう書いたら良いかわかんないんで、本来の Objective-C っぽくないのかも。
プラグインの初期化 (initGameCenterPlugin) と、実際の状況の取得 (isPlayerInfoReady) ね。

GameCenter 機能のサポートチェックは、コピペのまんま。
Screen Shot 2014-10-02 at 3.03.57 PM.png

初期化の部分で、一応フラグをクリアもしてます。

で、チェック本番部分だけど、色の変わってる部分は、詳細分かってないけど、多分引数としてポストプロセスをそのまま渡してるのかな?じゃ無いと納得出来ないコードなんだけど。
Screen Shot 2014-10-02 at 3.13.31 PM.png
サンプルにあった元々のコメントは消しちゃったんだけど、この部分は、ゲームがバックグラウンドからフォアグラウンドに戻って来たときに毎回実行してくれるらしい。ホントかな?
でも、それなんで、スリープ状態に入ったときの事とかは、あんまり気にしなくていいのかな。ま、いいや。後で考えよ。

いろいろ悩みながら、なんとかエラーは出なくなったな。ちょっと Objective-C もスキルアップかな^^;

※※ 追記 ※※
まだまだ結構、Objective-C の言語自体に関係した謎が多くて、その度にいろいろグーグル様に聞いて回ってます。
で、結構自分的に使い勝手がいいページがここのページ
なんか、もう足を向けて寝れない感じです。


Unity 側から呼んでユーザーを認証しよう!
もう何度もやってるんで、Unity 側の詳細は省きますね。
ポイントだけ。
Screen Shot 2014-10-02 at 5.21.03 PM.png
30〜36行目が、プラグインで呼び出す関数の宣言。
38〜66行目が、それぞれ GameCenter 機能の初期化と、実際プレイヤー情報が得られたかどうかの確認。
70行目で、GameObject がアクティブになった時に初期化処理を呼び出し。
エディタの時はコンパイルエラー無いけど、どうなんだろう? iOS ビルドを作ってみましょう!

おっ、iOSビルドも大丈夫かっ。じゃ、デバイスで実行してみましょうかね。


iOSビルドをデバイスで実行
さあ、どうなんでしょうかね....

あっれっ〜、何も起きませんね....
表向き、何も起きないのかな?

....いや、でも....

XCodeの initGameCenterPlugin ではブレークで引っかかるけど、isPlayerInfoReady の方は全然引っかからないにゃ〜。

Screen Shot 2014-10-02 at 5.32.04 PM.png

う〜ん。ちょっとこれは、次回ですね。

毎度、すいません。


        にほんブログ村 ゲームブログ×PlayNCBlogへ
 初めてみました。よかったらクリックお願いね ♪


いいなぁ〜これ。こんなのが家にあったらな〜
posted by やまけん at 11:01| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: