Skip to content

[古い記事]NCMBを使ってアプリのバージョンアップをせずにマスターデータを更新する その3

Posted in 技術記事


実行環境
Windows7 Professional 64bit
Unity5.4.1f1
C#
Android
NCMB SDK v2.2.0


NCMBを使ってアプリのバージョンアップをせずにマスターデータを更新する
その1 その2 その3(今回) その4


前回前々回と、基本的な部分を説明しました。
今回は少し手を加えて実用的なものを目指します。

バージョンチェックを行う

ユーザーの通信コスト(=通信費用+通信時間)を考えると、やはり無駄な通信は避けたいのが心情。しかし、ファイルストアの機能だけではマスターデータをダウンロードする前にその日付を取得することができません。
そこでデータストアに更新日時のみを保存し、事前に参照することで通信コストの低減を図ります。

バージョンチェックを行う その① 日付の取得

通常マスターデータは、バージョンアップ時には最新状態にしておくと思います。そこで、開発中マスターデータを更新した後(アップロード後だとさらに良い)に以下のメソッドを呼び出す(uGUIのボタンから呼ぶ等)ことで、最新版の日時を保存します。
なおデータストアで取得できる日時はUTC(世界標準時)なので、それに合わせて取得します。ちなみに日本時間の取得はDateTime.Nowです。

using System;
DateTime CSVDateTime;
//開発段階でしか呼び出せないようにしておく
void SetDate() {
CSVDateTime = DateTime.UtcNow; //端末の現在時刻をUTCで取得する
}

バージョンチェックを行う その② データストアの設定

日付が保存できたらデータストアの設定です。ダッシュボードでの操作は以下の4つです。
「クラスの作成」今回のクラス名はVersion
「フィールドの作成」今回のフィールド名はVersionData
「レコードの作成」
「値の入力」 下の画像の値です(呼び名が分からない…値?)。今回は数値型でマスターデータの更新日をいれることにします。

ポイントは4つ目の「値」の2つ右にある「updataDate」(レコードの更新日時)部分です。最後に「値」を書き換えた日時が記録されているため、マスターデータを更新した直後に「値」を書き換えることで、マスターデータ更新日時の代わりにします。
例のごとく公式マニュアルが丁寧なので細かい操作は丸投げします。なお、クラス名以外は利用しませんので、適当な内容で問題ありません。

公式サイト
データストア (Unity) : 基本的な使い方 | ニフティクラウド mobile backend

バージョンチェックを行う その③ データストアからデータを取得

ダッシュボードでの設定を終えたら次はスクリプトです。今回のポイントは以下の3つ。

「NCMBObject」データストアを利用する場合NCMBFileではなくこちらを利用
「LatestVersion.FetchAsync」データストアから非同期でレコードをダウンロードする
「LatestVersion.UpdateDate」ダウンロードしたレコードの更新日時を取得する

その②で作成(更新)したレコードの日時と、その①で取得した日時を比較することで、サーバーのマスターデータが最新版かどうか判別します。

using NCMB;
void VersionCheck() {
NCMBObject LatestVersion = new NCMBObject("Version"); //作成したクラス名を入れる(今回はVersion)
LatestVersion.ObjectId = ""; //作成したレコードのObjectID(一番左)を入れる
LatestVersion.FetchAsync((NCMBException e) => {
if (e != null) {
//エラー処理
} else {
//成功時の処理
if (LatestVersion.UpdateDate <= CSVDateTime) { //最新である=ダウンロード処理をスキップ } if (LatestVersion.UpdateDate > CSVDateTime) {
//最新でない=ダウンロード開始
DownLoadFile(); //前回のメソッドを利用
}
}
});
}

バージョン情報を更新する

その4続く…

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です