• Top
  • > Blog
  • > [AppPot] Android SDK利用チュートリアル(1)
2014/07/17 Enterprise BaaS製品“AppPot”, スマートデバイス x 企業システム, 企業システム

[AppPot] Android SDK利用チュートリアル(1)

こんにちは。AppPotのプロダクトマネージャをやっている十川です。

AppPotではiOS版と、Android版のSDKを提供しています。
アプリ開発者はSDKを使うことでAppPotのAPIに簡単にアクセスできます。

今日は、Android版のSDKを使ったモバイルアプリ開発について環境準備から、
データベースを自動生成するところまでを解説したいと思います。

1.AppPot SDKの導入

NCDCでは検証環境を準備しておりますので、
AppPotを使ってみたいという方はinfo@ncdc.co.jpにお問い合わせ下さい。

AppPotを使ったAndroidアプリの開発はADTのプラグインを導入したEclipseで行います。
Eclipseのダウンロードはこちらから可能です。

通常のAndroidアプリと同様にAndroid Projectを新規作成してください。
ここで特にAppPotに依存した設定はありません。

AppPotDemoApplicationというアプリをプロジェクトを新規作成して、Activityを作っています

AppPotDemoApplicationというアプリをプロジェクトを新規作成して、Activityを作っています


AppPot SDKを作成したプロジェクトのlibsフォルダにドラッグ&ドロップで取り込み、ビルドバスに含めます。

プロジェクトにAppPot SDKのjarを取り込んだ状態

プロジェクトにAppPot SDKのjarを取り込んだ状態

AppPot SDKをビルドパスに追加

AppPot SDKをビルドパスに追加

また、AppPotのSDKが必要とする以下のPermissionをAndroidManifest.xmlに追記してください。

  • android.permission.INTERNET:インターネット通信に必要
  • android.permission.ACCESS_WIFI_STATE:WiFi状態チェックに必要
  • android.permission.ACCESS_NETWORK_STATE:ネットワークアクセス状況チェックに必要

以下のようなエラーが出る場合、正しくPermissionが追加されていない可能性があります。

07-15 07:38:09.191: E/AndroidRuntime(29208): Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10237 nor current process has android.permission.ACCESS_NETWORK_STATE.
07-15 07:38:09.191: E/AndroidRuntime(29208): at android.os.Parcel.readException(Parcel.java:1425)
07-15 07:38:09.191: E/AndroidRuntime(29208): at android.os.Parcel.readException(Parcel.java:1379)

2.AppPot SDKを利用したアプリの開発

これでAppPot SDKを使用するための準備が整いましたので、アプリの開発に進みます。

AppPot SDKの初期化

AppPotサーバーにアクセスするための情報や、アプリの識別情報をセットします。

// AppPotの初期化
APService service = APService.getInstance();
service.setServiceInfo(getApplicationContext(),
    "jp.co.ncdc.AppPotDemoApplication",    // アプリID
    "fb5dc1bb43ec4f5daa60a4df9cd3d1bd",    // アプリKey
    "1.0",                                 // アプリバージョン
    "49.212.158.239",                      // AppPotサーバー・ホスト名
    "apppot124",                           // AppPotサーバー・コンテキストルート
    8080,                                  // AppPotサーバー・ポート番号
    false,                                 // Push通知要否
    false);                                // SSL要否

Value Objectの定義

AppPotで扱うデータはValue Objectで定義を行います。
APObjectを継承して、必要な属性をメンバ変数に持つだけです。

import jp.co.ncdc.apppot.stew.dto.APObject;

public class CaseReport extends APObject {

	public int age;
	public int gender;
	public int isFollow;
	public String memo;
	public String patientName;

	public CaseReport() {
		setPersistentType(PersistentType.APLocalAndServer);
		this.setAutoRefresh(true);
		this.setRefreshInterval(1000);
	}
}

Value Objectのの登録とデータベースの作成

// 認証
service.authentication(
	1,			// 会社コード
	"sogo@stew.com", 	// ユーザーID
	"a", 			// ユーザーパスワード
	new APResponseHandler() {	// 結果は非同期で受け取ります

	@Override
	public void onFailure(APResponse arg0) {
		Log.e(TAG, "Can not Login:" + arg0.getDescription());
	}

	@Override
	public void onSuccess(APResponse arg0) {
		Log.i(TAG, "Login successfull:" + arg0.getDescription());
	}});

// ValueObjectの登録
ArrayList tables = new ArrayList();
tables.add(new CaseReport());

// App用DB作成。この時、端末と、サーバーの両方にデータベースが作成される
APEntityManager.getInstance().createAppDB(
	tables, 			// テーブル
	1,				// 会社コード
	true, 				// サーバーのデータベースを再生するかどうか、
	new APResponseHandler() {	// 応答は非同期で受け取ります

	@Override
	public void onFailure(APResponse arg0) {
		Log.e(TAG, "Can not create App Db:" + arg0.getDescription());

	}

	@Override
	public void onSuccess(APResponse arg0) {

		Log.i(TAG, "Created App Db successfully:" + arg0.getDescription());
	}
});

ここまでで、データベースの作成は完了です。

こちらはサーバー側で自動性されたテーブルの定義ですが、このようなテーブルが簡単なコーディングだけで作成可能です。

自動生成されたサーバーのテーブル定義

自動生成されたサーバーのテーブル定義

次回は、アプリからデータの読み書きをやってみたいと思います。

記事一覧へ