今回はクライアント側を作ります。
iOSかAndroidどちらで作るか迷いましたが、まだまだ未定な部分が多く変更も多そうなので更新サイクルが早いandroidを選択しました。
iOSは審査が3〜5営業日かかるので待ってる間ヒマになってしまいますね。
Androidの設計について
今回のキモは描画コストが高いフィールドマップをどうやって作るかがキモなのですが
OpenGLなら解決できるのでこれベースのもので行おうと考えてます。
フィールドマップ以外は普通のUIを使いたいので、javaベースで使われているAndEngine(http://www.andengine.org/) が良さそうです。
画面遷移
このような遷移を想定していて、それぞれをActivityでつなげます。
一つのActivity内でViewの遷移をする方が処理が早くていいのですが、AndEngineがActivityを専有してしまうため
別々に作ることにします。
今回はスプラッシュを表示してサーバにログインするところまで作ります。
HTTPrequest
今回サーバと通信する部分は AsyncHttpClient (http://loopj.com/android-async-http/) を利用しています。
今回のサービスではリクエストが正常に処理されたかどうかをレスポンスで判断するようにしています。
例えば以下のように成功する通信は
https://freemarket-app.appspot.com/user/api/account/login?clientid=013dfcc0-5b90-43f2-8160-66b288edfa68&hash=a28b48d2937425d024fb5b75eb71cbdb
{
authToken: "ee289fc5f7680a0933f73c995c06d40b",
name: null,
response: {
status: 200
}
}
と返ってくる一方で、想定していないリクエストがきた場合(今回はhashを変更してます)
https://freemarket-app.appspot.com/user/api/account/login?clientid=013dfcc0-5b90-43f2-8160-66b288edfa68&hash=aaaaa
{
response: {
status: 401,
errormessage: "ログイン失敗"
}
}
と、responseオブジェクトのstatusを見ることで判断できます。
今はstatus=200の時成功としか決めていませんが、ここを変更することで再ログインが必要とか決めるようにしてクライアントの制御をしていくと良さそうです。
ということでこんなコードを書きました。
https://github.com/nagai/freemarket/tree/20140413
今後の課題
- UIの色を変更したい
- 配送方法が不明
エラー処理を決めたい
クライアントのリクエストが不正だった場合にどうするかをきめたほうがきめる
・アプリ再起動
・同じリクエストを再度行う
あたりがいいかな?テストをしたい
今は chrome extentionのAdvanced REST client を利用してぽちぽち試しているのですが
そろそろ手間が増えてきたのでなにか別の方法を導入したいです。
次回
次はクライアント側のUIを作っていきます。