前提
- https://developers.facebook.com/docs/tutorials/mobile-app-ads/ の内容に従えば良い
- https://developers.facebook.com/docs/tutorials/mobile-app-ads/jp/ に日本語訳があるが、現文章に若干追従していないように見える
- 正常に組み込むことができたかどうかは https://developers.facebook.com/apps から"最後に報告されたモバイルインストール"で確認できる
iOS
- http://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/ の手順に従ってSDKを組み込む
- git submoduleとして組み込める。その際の手順は手順書に従う
- PhoneGapのホワイトリストに
graph.facebook.com
を追加する
以上で特に苦労せず動作を確認できた。 大雑把にどういう仕組みでトラッキングしているのかも眺めたけど、僕は調査の様子を横から眺めていただけなので書かないでおく(気になる人はSDKのコードを眺めると良いと思う。それほど変なことはしていなかった)。
Android
- https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/
- 特に記述が無いが、こちらもgithubでホスティングされている https://github.com/facebook/facebook-android-sdk
- git submoduleとして取り込める。こちらに関してはEclipseで開発している場合はscripts以下のスクリプトを実行する必要は無い(要出典)。CUIで開発している場合は利用するのが楽だろう
- テストを実際に実行してみると、APKが転送されてものすごい勢いでアクティビティが遷移して、勢いがある
- なんか1つだけテストが落ちていたが……
- bin以下にエミュレーター用のAPKが格納されているのはアーカイブ版だけ
- このとき、Facebookアプリを最新のバージョンにしておくこと!
- 案外トラッキング周りも更新をしているのか、古いアプリだと正常に動作しなかった
- 最悪なのが、このときインストールの報告に失敗していても"報告をした"という情報だけは記録される。結果としてその後正常に動作する状態に持っていったとしても、Facebookのサマリーページから動作を確認することができない。端末を変えるか、Shared Preferencesを削除すること
- PhoneGapのホワイトリストは、Android版に関してはWebView内の通信にのみ関わっているようなので編集する必要はない
以上で罠に何度かハマって心が折れたものも、動作を確認できた。 こちらに関しても大雑把にどういう仕組みでトラッキングしているのか眺めたけど、こちらに関しても横から眺めていただけなので特に書かないでおく(こちらに関してもAndroidの機能の上で実装されていて特に変なことはしていなかった。勉強になる)。
蛇足
この前はAPNS絡みで辛い感じになって、今度は先述のAndroidの件で辛い感じになって、常時心が折れてとにかく投げ出したい気持ちだった。 AppleとFacebookというと僕としてはいかんとも趣向の合わない企業であり(彼らはモノカルチャー的であり、ジョックス的である。そうした雰囲気がナードとしての僕をいらつかせるのだ)、そして巨大なシステムは必ずぶっ壊れていてまともに動作するわけがないという悲しい経験則を持っていたので、そもそもこの作業を始める前から無意味に不信感を持っていた。
しかしそうした態度はエンジニアとしては完全に恥ずべきものであり、何だかんだで多数の開発者が実際に利用して動作しているシステムなのだから通常のフローで利用している限りでは大体正常であるはずだし、そうでなければそうした情報が手短に手に入るはずだし、手元にソースコードがあるのだからある程度はprintfデバッグをしてでも動きを追うべきだった。
そうであろうという思考は持っていたものも、元からある不信感と悪い意味での怠惰な性格からその方向に進もうとしなかった。結果として時間を浪費した。 誤った思考停止ほどひどいものはないので、今後は同じようなことを繰り返さないようにもう少しフレッシュな態度で事に臨もうと思い直した…。