自分で使うためだけにGeoPoを付加できるiPhoneのTwitterクライアントを作ってみた。
NatsuLiphone 1.00のソースを公開しました – takuma104.log
githubで公開されているものを利用させていただいたので、僕は多少のUIとイベント、そしてジオポの符号化ソースを加えるだけ。とても有益なものを公開していただき、ありがとうございます。
Xcodeで実装
ジオポの符号化をコピペ
ジオポ / 開発者向け情報 GeoPo符号化 サンプルコード in Objective-C
以前に作ったObjective-Cのサンプルコードをそのままコピペ。すげー、変な処理(無駄な)してると自覚してるコードなんだけど、誰からも突っ込みがないのでそのまま使う。この部分の効率を高めたとしても全体的な効率に貢献できるわけでもないしね(でも、突っ込み歓迎だよ)。
UIのボタンを作る
InterfaceBuilderで残り文字数とpostボタンの間にGeoPoボタンを入れる。んで、ビルドしてシミュレーターで確認するも反映されない ><
どうやら、InterfaceBuilderのファイルがあるものの、UIはコードの中に埋め込まれていた。なので、コードでボタンを設置。ついでにイベントも。
GeoPoボタンを押したときのイベントを作る
- GeoPoボタンを押す
- 位置情報を取得
- ジオポ符号化
- 「http://geopo.at/」に符号化したコードを加える
- Tweetの本文に4.を加える
以上のようなフローで処理を展開させる。
位置情報を取得
GClueの佐々木さんが作ったチュートリアルがわかりやすい。
iPhoneアプリ入門(GPS) (iPhone App Docs) GClue
ただ、このままだと位置情報をとり続けるので、位置情報を取得したあとは、
[locationManager stopUpdatingLocation];
してください。
そのタイミングなんだけど、精度が高まるまでチェックするとか、何秒後とかいろいろやり方あると思うけど、めんどくさいから僕はupdateをcountして2回目を取るとか、適当すぎる作り。
Tweetに反映
これで、ボタンを押せばTweetのテキストにジオポURLが付け加えられるようになった。
位置情報を取得している間は、本来ならば、プログレスアイコン(処理中を示すぐるぐる回ってるアレ)を表示させて、操作はできないようにすべきなんだけど、めんどくさいk(ry
アイコンと、ロード中画像を作って完成
47pxの正方形アイコンと起動時の画像を用意してあげて完成。
余談
iPhoneシミュレーターの位置情報デフォルト値はクパチーノのApple本社近くなんですね。それも、デフォルトアプリ「マップ」のアイコンデザインと同じとこ。
ジオポ @ CAクパチーノ
あと、シミュレーターでは複数回の位置情報アップデートがされない(値変わらないから)ことに注意してください。
Twitterクライアントの名前を残したい(このままだとfrom Webになる)ところだけど、メールでの申請が必要らしいので、自分専用クライアントのGeoPo Twitterでは無理。パス。
実機で使ってみる
アイコン。
夏Lion for iPhoneそのまま。
Tweetを入力して、GeoPoボタンを押すとGPSを使った現在位置のジオポURLを付加してくれる。
GeoPo Twitterからタイムラインのジオポをクリックして、アプリ内蔵のブラウザを通して地図を表示した様子。
GeoPoの仕様は最初、iPhoneからは直接デフォルトアプリの「マップ」に飛ばすようになっていたんだけど、アプリを跨ぐのが非常に煩わしいので、携帯版ジオポと同様、スタティックな地図を表示させて、地図下部にあるリンクからデフォルトアプリを呼べるように仕様変更した。
こっちのほうがいいと思う。うん。
別のTwitterクライアントであるTwitterFonで表示した様子。
TwitterFonの場合、タイトルが上部に表示されるので、住所も表示されていい感じ。
まとめ
僕はほとんど何もしてない。簡単にTwitterクライアントが作れることを実証。
Twitterクライアント開発者のみなさん、ジオポを実装してみませんか?詳しくはジオポ / 開発者向け情報
来週、東京で山手線ウォーキングをする予定なので、そのときにコレを活用してみる。Twitterでつぶやきが地図になり、つぶやきの連続がGPSトラッキングになるっていう面白さを伝えるためにね。