UISegmentControlは結構便利なんだけど見た目がいまいちな件。
カスタマイズもiOS5からならできるけど、それ以前はTintColorぐらいしかいじれない。
カスタマイズは置いといても見た目がちょっとよくてアニメーションもついた SVSegmentedControl がなかなかよかったので紹介。
選択するときにアニメーションするし、ナイス!
UISegmentControlは結構便利なんだけど見た目がいまいちな件。
カスタマイズもiOS5からならできるけど、それ以前はTintColorぐらいしかいじれない。
カスタマイズは置いといても見た目がちょっとよくてアニメーションもついた SVSegmentedControl がなかなかよかったので紹介。
選択するときにアニメーションするし、ナイス!
iPhoneのGPSは高度の精度が良くない。ユーザーに高度情報を表示するには十分な精度がない。
例えば、LatLng2Height のようなAPIを叩くことで地表面を移動する自転車ならかなり正確な高度を取得することができる。iPhoneの中に SRTM3 のデータを全部突っ込んでおいてうまく検索すればいいかも。
Yahooがだしている高度取得APIは、国土地理院の基盤地図情報を使ってるらしい。
SRTM3をsqliteにつっこんでー・・みたいな事をしてみようかなぁ。でも北アメリカだけでも7GB近いデータになっちゃう。うーんだめだなぁ。サーバサイドでやったほうがいいかな。
前回、Google Analytics SDKを紹介したんだけど、やっとこ自分のアプリに組み込んでみた。
すごい簡単。注意することといったらトラッキングデータの Event , Action , Labelが何を意味しているのかわかりにくいことくらい。でもGoogleから日本語のドキュメントがでてるので、読めばいいと思う。あとはしばらくテストしてみて、意味のあるデータが取れているかどうか確認したらいいかな。
REKにGarmin Traning Centerへのデータ連携機能を追加中。TCXファイルを書き出せるようにする予定。
Garmin Connectへの直接アップロードがしたいけど、APIがよくわからない。なんかGarmin Edgeとかをブラウザから直接接続するAPIとかはあるんだけど、Garmin ConnectのAPIがわからん。
あと、TCXファイルのSpeedの単位が謎。時速 * 0.31位なんだけど・・・
・追記
https://forums.garmin.com/showthread.php?t=6754
このへんでスピードの単位はメーター/セカンドって言ってる。km/h / 3.6 = m/s だね。
TwitterのTLをみてたら、Google Analytics SDK for iOS ってのが存在することをしった。iPhoneアプリ内のどの機能がつかわれているとか、どのビューがよく見られているとか解析することができる。ちょうど自分でつくろうかどうか迷っていたところなのでこれを使おうと思った。
iPhoneアプリのアクセス解析Google Analytics SDK for iOSについて
素晴らしい資料!
いつもTableViewCellのロードのコードとかをちまちま書き換えるのがめんどかったり、定形のコードをせっせと探したりするのにたいがいむかついてきた。Twitterでいいのがないか聞いてみたら、師匠 Akamatsuさんからリプライ!
デザインも可愛くてよさそう。これを愛用されているそうです。とりあえず僕は30 Day Trial!
前回のエントリでいまいちできてなかったんだけど、一応ポストに成功したのでメモ。
前回足りなかったのはパーミッションの設定。public stream にポストを流すには、publish_stream パーミッションが必要。なので
_permissions = [[NSArray arrayWithObjects:@"publish_stream", @"read_stream", @"offline_access",nil] retain];
こんな感じに設定してログインする。
GraphAPIはよくわかんなかったから、REST APIを使うことにした。
ここ。どうやらmessageさえ埋まってればポストできそうなので、
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"テストメッセージ", @"message",nil]; [_facebook requestWithMethodName:@"stream.publish" andParams:params andHttpMethod:@"POST" andDelegate:self];
こんな感じで呼び出せばポストできた。
前回調べるって書いた、一度認証したらそれを保存しておいて、二度と認証画面を出さない方法。facebook のSDKだとFacebookアプリを立ち上げて認証してOKを押すと、URLスキーマでもとのアプリをパラメータ付きで呼び出してくる。
そのパラメータの中にアクセストークンと有効期限が入っているよう。そいつを保存しておいて、次からは保存したアクセストークンと有効期限を設定すると良いみたい。
FBSessionDelegate の fbDidLogin にて保存
保存
[[NSUserDefaults standardUserDefaults]setObject:_facebook.accessToken forKey:@"token"]; [[NSUserDefaults standardUserDefaults]setObject:_facebook.expirationDate forKey:@"expiredate"]; [[NSUserDefaults standardUserDefaults]synchronize];
設定は _facebookをalloc Initした直後ぐらいに、
NSString *accessKey = [[NSUserDefaults standardUserDefaults]objectForKey:@"token"]; NSDate *expdate = [[NSUserDefaults standardUserDefaults]objectForKey:@"expiredate"]; if (accessKey){ _facebook.accessToken = accessKey; _facebook.expirationDate = expdate; }
そんな感じでオッケーみたい。
ちなみに、facebookErrDomainerror 506 は多分デュプリケートメッセージ。同じメッセージを連投するとでるんだとおもう。
今度はFacebookにステータスメッセージを投げたい場合。Facebook は iOS 用のSDKをつくってくれているのでとりあえずそれをダウンロードする。
雰囲気をつかむためにDemoアプリを実行するといいとおもう。開発で使うiPhoneにFaceBookアプリがすでにインストールされてると認証が楽になる。認証の部分を自前で行う方法をちょっと調べ中。あとで書くかも。
僕がやりたいのは自分のウォールにステータスメッセージをポストしたい。どのAPIを呼び出せばよいか調べる。
RESTのAPIは今後廃止予定らしいので新しいGraphAPIというのを使うのがいいらしい。何はなくてもリファレンスを調べる
これのStatusMessageの所じゃなかろうか。useridが必ず必要なんだけど、ログインしている状態では自分のuseridは「me」で指し示せるらしい。だからStatusMessageのURLは https://graph.facebook.com/me/feed こんな感じになる。
だけども、こっからどういうパラメータで叩けばいいのかじぇんじぇんわかんない。今調べ中
アプリを作ってるとつい Twitter に軽く一言投稿してみたりしたくなりがち。しかし、Twitter は最近 Basic 認証をやめちゃったから手軽に Twit とかできない。今は oAuth か xAuth を使う必要がある。iPhone アプリ的には xAuth のほうがBasic認証と同じUIを使えるので良いと思うんだけど、申請が必要だったりちょっとめんどくさい。なのでとりあえずのところ、oAuth を使うのがいいと思う。
ココを読むのがファイナルアンサーなんだけど、引っかかった点があったので補足しておくね。
bengottlieb’s Twitter-OAuth-iPhone at master – GitHub
このライブラリを使うときにlibxmlを使うかどうかを選べる。デフォルトは使わない。だけどincludeされてるからファイルの末尾にlibxmlが付いたファイルを消さないといけない。