くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Unity×AndroidでmBaaSのニフティクラウド mobile backend(NCMB)を使ってみる

ひさびさにAndroidアプリをリリース! 初の横スクロールアクション「あざらしロジック」(GooglePlay)

f:id:wannabe-jellyfish:20170128222935p:plain

www.youtube.com

その際にいろいろやったので、忘れないための備忘録φ(..)メモメモ
「あざらしロジック」で、Nifty Cloud mobile backend(NCMB)を導入したときの話。

NCMBのUnityプラグインのインストール

NCMBのUnityプラグインは、GitHubにて提供されているので、こちらからダウンロード。

ダウンロードしたzip(NCMB.2.2.0.zip)を解凍すると、「NCMB.unitypackage」が入っているので、そちらをインポート。

【注意】ほかにもSupportLibを利用しているプラグインを入れている場合

support-libやgoogle-play-serviceが競合していると、上手く動かないのでインポート時に外しておく。 f:id:wannabe-jellyfish:20170129203102p:plain

特にNCMBの、v2.2.0のライブラリはバージョンが古く、
AdMob/GPGS/Applovinなどと合わせて利用するとバージョンの整合性が合わず、上手く行かなかった。。。

ただ、AndroidManifest.xmlを除いた場合、必要な項目を手動でマージする必要がある。

使い方

基本的な使い方は以下の感じ。 ドキュメントも日本語でまとまっているため、わかりやすい

更新系

// Insert
NCMBObject obj = new NCMBObject ("Book");
obj["test"] = "value";
obj.SaveAsync ((NCMBException e) => {      
    if (e == null) { //成功時の処理 }
});

// Update(ObjectIdを指定する)
NCMBObject obj = new NCMBObject ("Book");
obj.ObjectId = "xxxxxxxxx";
obj["test"] = "value2";
obj.SaveAsync ((NCMBException e) => {      
    if (e == null) { //成功時の処理 }
});

// Delete
obj.DeleteAsync((NCMBException e) => {      
    if (e == null) { //成功時の処理 }
});

参照系

// Search by objectId
NCMBObject obj2 = new NCMBObject ("Book");
obj2.ObjectId = obj.ObjectId;
obj2.FetchAsync ((NCMBException e) => {        
    if (e == null) { //成功時の処理 }
});

// Search Query
//QueryTestを検索するクラスを作成
NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> ("QueryTest");
//Scoreの値が7と一致するオブジェクト検索
query.WhereEqualTo ("Score", 7);
//取得件数の指定
query.Limit = 5;
//取得開始位置の指定
query.Skip = 6;
// Sort
query.OrderByDescending ("Score");  //Scoreを降順で並べ替え
query.AddAscendingOrder ("Age");    //さらにAgeを昇順で並べ替え
// 外部参照も合わせて取得
query.Include("Child");

// 検索を実行
query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {
    if (e == null) {
        //Scoreが7のオブジェクトを出力
        foreach (NCMBObject obj in objList) {
            Debug.Log ("objectId:" + obj.ObjectId);
        }
    }
});

// 検索件数の取得
query.CountAsync((int count , NCMBException e )=>{
    if(e == null){
        //件数を出力
        Debug.Log("件数 : "+ count);
    }
});

以上!!

参考にしたサイト様