実行環境
Windows7 Professional 64bit
Unity5.4.1f1
C#
Android
NCMB SDK v2.2.0
NCMBを使ってアプリのバージョンアップをせずにマスターデータを更新する
その1(今回) その2 その3 その4
アプリ内のマスターデータ(CSV)をAPKのアップデート無しで更新出来るようにしたいと思っていたところ、NCMB(ニフティクラウド mobile backend)とやらが良さそうなので実装してみました。
これを利用すれば、サーバーの知識がなくてもファイルやデータの保存・更新・ダウンロードができるため、「サーバーに最新のマスターデータを置く→ユーザーが各自ダウンロードして内部データを更新」ということが簡単に出来ます。
他にもプッシュ通知や会員認証など色々な機能がありますが、今回は使いません。
NCMBを導入する
とてもわかり易いサイト様がありますのでそちらを参考にして下さい(丸投げ)
紹介~導入
ニフティクラウドモバイルバックエンドでデータストア機能を使ってみた【Unity】【NCMB】 – (:3[kanのメモ帳]
ファイルストアにアップロードする
データストア機能は1行程度のデータをやり取りするのには便利ですが、マスターデータのような大きなものを扱うのには向いていません。代わりにファイルストア機能を利用します。
公式マニュアルが結構親切なので今回も丸投げです。
アップロードを行うのはユーザーではなく作者(自分)なので、スクリプトではなくブラウザからファイルをアップロードします。
MIMEタイプについては、今回利用するのがCSVファイルなので「text/comma-separated-values」です。
参考
MIMEタイプ一覧
パーミッションについては一見ちゃんと設定しないとダメなように見えますが、そもそもアプリ側から処理をしなければいいのでデフォルトのままにしました。
ファイルストアからダウンロードする
ここからはアプリ側の設計です。たったこれだけでサーバーから非同期でダウンロードしてコールバックまで設定できます。
例によって公式マニュアルより。
using NCMB;
NCMBFile file = new NCMBFile ("ファイル名"); //アップロードしたファイル名を入れる
file.FetchAsync ((byte[] fileData, NCMBException error) => { //ダウンロードを開始する命令。
if (error != null) {
//エラーが起こったときの処理を入れる。
} else {
//正常にダウンロードが完了した時の処理を入れる。
}
});
ダウンロード後の処理
その2に続きます。