Edited at

Androidでデータをサーバに保存する最短方法とは?

More than 3 years have passed since last update.


なんでこれを作ったか?

スマホアプリってデータを保存したいということって何って思われますね。

実は色々場面で使われています。例えば、ゲームアプリだとスコアをユーザ間共有したり、写真アプリだと画像をどこかに保存したいしたり、そのようなことですね!

うちのサービス ニフティクラウド mobile backend - mBaaS というものを提供していて、初心者でも、数行のコードですぐデータ保存できちゃいますので、今回簡単に紹介します。今までMonacaで見てくれている方が多いかと思いますが、今回はAndroidという切り口でやってみました!


作るもの

Android Studioでボタンが一個アプリを作成し、

ボタンを押したら、データが保存されます。

イメージ的は以下のようになります。

5554_Nexus_5_API_23.png


準備


手順


  • テンプレートプロジェクトをダウンロード

  • SDKを追加(済み・最新SDKを利用したい場合、更新作業として行ってください)

  • アプリ作成し、キーを設定

  • 動作確認


STEP 1. テンプレートプロジェクト


  • プロジェクトのGithubページから「Download ZIP」をクリックします。

  • プロジェクトを解凍します

  • AndroidStudioを開きます、既存プロジェクトを開くことを選択します。

5554_Nexus_5_API_23_2.png

先ほどダウンロードしたプロジェクトを選択し開きます。

androidstudio1.png


STEP 2. SDKを追加と設定 (済み)

SDKとはニフティクラウドmobile backendが提供している「データストア」「プッシュ通知」などの機能をAndroidからも簡単にコード書ける(数行ぐらい)ライブラリーのものです。

002.png

mBaaSでは、Android, iOS, Unity, JavaScript SDKを提供しています。

今回Android SDKの追加し方と設定を紹介します。

※ダウンロードしたプロジェクトには既に設定済みですが、最新ではない場合、ご自身で入れ替えてください!またご自身のプロジェクトにもSDKを追加したい場合も同じく実装必要です。


  • SDKダウンロード
    SDKはここ(SDKリリースページ)から取得してください.


    • NCMB.jarファイルがダウンロードします。



  • SDKをインポート


    • app/libsフォルダにNCMB.jarをコピーします



  • 設定追加


    • app/build.gradleファイルに以下を追加します



dependencies {

compile 'com.google.code.gson:gson:2.3.1'
compile files('libs/NCMB.jar')
}


  • androidManifestの設定

タグの直前に以下のpermissionを追加します。

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


STEP 3. アプリキー設定


  • 会員登録(無料)をし、登録ができたらログインをすると下図のように「アプリの新規作成」画面出るのでアプリを作成します
    003.png

  • アプリ作成されると下図のような画面になります

  • この2種類のAPIキー(アプリケーションキーとクライアントキー)は先ほどインポートしたAndroidStudioで作成するAndroidアプリにニフティクラウドmobile backendの紐付けるため、あとで使います.

004.png

この後動作確認でデータが保存される場所も確認しておきましょう

005.png


  • AndroidStudioでの設定

MainActivity_java_-_android_data_demo-master_-____Downloads_android_data_demo-master_.png

ニフティクラウドmobile_backend_2.png


STEP 4. 確認

アプリにてボタンをタブし、保存成功!とメッセージが表示しました。

5554_Nexus_5_API_23_3.png

mBaaS側もデータが保存されたことを確認しています!

ニフティクラウドmobile_backend_7.png


コード説明


  • SDKおよび必要なライブラリーをインポートします

import com.nifty.cloud.mb.core.DoneCallback;

import com.nifty.cloud.mb.core.NCMB;
import com.nifty.cloud.mb.core.NCMBException;
import com.nifty.cloud.mb.core.NCMBObject;


  • SDKを初期化

MainActivityのOnCreateメソッドに実装、ここでAPIキーを渡します。

@Override
protected void onCreate(Bundle savedInstanceState) {
<省略>
//**************** APIキーの設定とSDKの初期化 **********************
NCMB.initialize(this, "YOUR_APPLICATION_KEY", "YOUR_CLIENT_KEY");
}


  • データを保存する実装


  • mBaaSのAndroid SDKが提供するNCMBObjectクラスがデータストアを操作するためのクラス。データを保存するには、このクラスが提供するsaveInBackgroundメソッドを利用し、保存します。


  • NCMBObjectのインスタンスobjを作成し、"TestClass"を指定することで、データストアにTestClassクラスを操作することができます。


  • インスタンスobjに(キー、バリュー)というふうに、設定します。この場合、"キー"が"message", その"バリュー"が"Hello, NCMB!"として指定しています。



  • saveInBackground()を実施することで、非同期に保存が行われます。非同期実施するため、DoneCallBack()を使って、成功・失敗処理を指定します。


    • 成功する場合、アラートで保存したIDを合わせて表示します。

    • 失敗する場合、アラートでエラーを合わせて表示します。




final NCMBObject obj = new NCMBObject("TestClass");
obj.put("message", "Hello, NCMB!");
obj.saveInBackground(new DoneCallback() {
@Override
public void done(NCMBException e) {
if (e != null) {
//保存失敗
new AlertDialog.Builder(MainActivity.this)
.setTitle("Notification from Nifty")
.setMessage("Error:" + e.getMessage())
.setPositiveButton("OK", null)
.show();

} else {
//保存成功
new AlertDialog.Builder(MainActivity.this)
.setTitle("Notification from Nifty")
.setMessage("Save successfull! with ID:" + obj.getObjectId())
.setPositiveButton("OK", null)
.show();

}
}
});


参考

サンプルコードをカスタマイズすることで、様々な機能を実装できます!

データ保存・データ検索・会員管理・プッシュ通知などの機能を実装したい場合には、

以下のドキュメントもご参考ください。


最後に

データを保存するってサーバを立てたり、自分でサーバ運用とか、設計とか、アプリからサーバーとのやりとりも色々考慮しなければなりません。

最短方法というのは、このようにmBaaSサービスを使って、運用、設計など自分でやらなくて済む、開発も数行コード書けばいいという便利なものはいかがでしょうか?