More Related Content
Similar to 「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
Similar to 「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」 (20)
More from Yuki Anzai (18)
「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
- 2. • blog : Y.A.M の雑記帳
• y-anz-m.blogspot.com
• twitter : @yanzm (やんざむ)
• Android女子部副部長
• uPhyca Inc. (株式会社ウフィカ)
あんざいゆき
- 5. Mobile Backend Starter とは
• サーバ側のコードを書かなくていい
• Google App Engine を使っているのでスケー
ラビリティが高い
• 認証機能が組み込まれている
• Google Cloud Messaging(GCM)機能が組み
込まれている
• 継続クエリ
- 7. • Deploy → App Engine に Mobile Backend がデプロイされる
• http://mobile-**********.[Project ID].appspot.com = 設定
• https://github.com/GoogleCloudPlatform/solutions-
mobile-backend-starter-java
Google Cloud Console
Deploy
設定
Android 用のライブラリ兼サンプルアプリ
- 12. Google Cloud Messaging とは
• Android デバイスに push 通知を送れる機能
• GCMと略す
• 小さいデータを送ることができる
• サードパーティのサーバーが必要
Google Play
サーバー
アプリ
device
Google
Play アプリ
サードパーティ
サーバー
push
- 14. データの永続化
• オフライン対応必須 = デバイスの DB にもデータ
保存
• BackupAgent というバックアップ機能が
Android にすでにある
• 同期処理がめんどい(コンフリクトしたら...)
• ゲストブック的なものでオフライン対応を捨てる
ならあり(?)
- 23. サンプルアプリは必要?
• Android に依存しない部分 → jar
• Android に依存する部分 → Library Project
• http://developer.android.com/tools/
projects/projects-eclipse.html
• サンプルアプリは jar や Library Project を利
用する
- 24. ライブラリ作成時の注意点
• bin/ gen/ はリポジトリや zip に入れない
• github が生成してくれる .gitignore には
bin/ gen/ が含まれている
• Build path の設定に注意
• リソース(Library Project)の扱いに注意
• 画面回転に注意(ライブラリでメモリリークと
かつらい!)
- 25. Build path の設定に注意
• project のインポート時に endpoint-libs が build path
として認識されないことがある
• project 直下の src 以外にコードがあるとめんどいかも
[Java Build Path] の [Source] にendpoint-libs/
libmobilebackend-v1/mobilebackend/mobilebackend-
v1-generated-source を追加
- 26. Library Project とは
• 別のプロジェクトをそのままライブラリとして
利用できる機能
• Library Project とアプリケーションで同じリ
ソースIDのものがあるとどちらかが無視される
ので、ライブラリ側はパッケージ名などで
prefix をつける
• Action Bar Sherlock などが Library Project
形式のライブラリとして有名
- 32. public class GCMReceiver extends BroadcastReceiver {
private final static String GCM_KEY_SUBID = "subId";
private final static String GCM_TYPEID_QUERY = "query";
public static String getRegistrationId(Context context) {
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
String registrationId = null;
try {
registrationId = gcm.register(Consts.PROJECT_NUMBER);
} catch (IOException e) {
e.printStackTrace();
}
return registrationId;
}
@Override
public void onReceive(Context context, Intent intent) {
// decode subId in the message
String subId = intent.getStringExtra(GCM_KEY_SUBID);
Log.i(Consts.TAG, "onMessage: subId: " + subId);
String[] tokens = subId.split(":");
String typeId = tokens[1];
// dispatch message
if (GCM_TYPEID_QUERY.equals(typeId)) {
CloudBackendAsync.handleQueryMessage(tokens[2]);
}
- 36. MBS へのお願い
• 簡単に GAE に移行したい = サーバー側のコード
も少しいじりたい
• 画像アップロードのサンプルがほしい
• Android 2.x でも使いたいなー(今は API Level
16以上)
• ぜひ Library Project にしてください
• Google Play Services の GCM 使ってね
- 37. その他
• API とか GAE コンソールとか API Key とかが全
部 Google Cloud Console から行けるようにまと
まったのはとてもいい
• developers.google.com/cloud/ 以下のコンテン
ツが Google Cloud Console に対応してないのが
残念!Google の人がんばって!