Help us understand the problem. What is going on with this article?

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サービスを使って、運用、設計など自分でやらなくて済む、開発も数行コード書けばいいという便利なものはいかがでしょうか?

fjct
クラウド・IoT 関連サービスを開発・提供している企業です。(こちらは、富士通クラウドテクノロジーズの有志にて運営しております。)
https://fjct.fujitsu.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした