ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

複雑なプッシュ通知の配信条件をJavaScript SDKを使って簡単に設計する

f:id:mbaasdevrel:20180120145426p:plain

プッシュ通知は様々な条件を組み合わせて配信できます。管理画面上では配信対象件数を確認しながら条件を設定できますが、指定できるのはAnd検索のみで、かつ日付など細かい条件は指定しづらくなっています。

かといって、SDKから配信設定を行う場合、SearchConditionに適用するのはJSON形式となっており、REST API リファレンス : クエリの指定方法を熟読しないと正しい設定ができないものになっています。

簡単なものでしたら管理画面で十分ですが、ちょっと細かい条件を考えると途端に敷居が上がってしまいます。そこでSearchConditionに適用するJSONを簡単に調べる方法を紹介します。

JavaScript SDKを使う

このために必要なのはNode.js向けのJavaScript SDKになります。Node.jsがインストールされている前提として、次のようにコマンドを実行します。

mkdir push_search
cd push_search
npm init .
npm install ncmb --save

インストールが終わったら、次のようなスクリプトを書いてみましょう。例えばファイル名は index.js です。アプリケーションキーとクライアントキーは適当です。

const NCMB = require('ncmb');
const ncmb = new NCMB('aaa', 'bbb');

const Data = ncmb.DataStore('Data');
Data
  .or([
    Data.lessThan("level", 10),
    Data.greaterThanOrEqualTo("score", 500)
  ])
  .fetchAll()
  .then((results) => {
    
  });

これはDataクラスをor条件で検索するものです。JavaScript SDKであれば分かりやすいですが、これをJSONのコードで指定するのは大変かと思います。

ファイルを修正する

そこで次に node_modules/ncmb/lib/query.js を開いて 585行目(バージョン2.2.1の場合)あたり、fetchAll関数の中に次のように追加します。これは検索条件を処理した内容を出力させています。

console.log(qs.parse(opts.join("&")));

実行する

修正した後、コードを実行すると次のように結果が出ます。この時のwhere以下のJSONが文字列になった部分がSearchConditionになります。

$ node index.js 
{ where: '{"$or":[{"level":{"$lt":10}},{"score":{"$gte":500}}]}' }

さらにいうと、データストアではなくInstallationクラスを検索するようにすれば、実際に配信対象になるデータが確認できます。この時には正しいアプリケーションキー、クライアントキーを用いてください。

ncmb.Installation
  .or([
    Data.lessThan("level", 10),
    Data.greaterThanOrEqualTo("score", 500)
  ])
  .fetchAll()
  .then((results) => {
    
  });

まとめ

プッシュ通知作成時のSearchConditionはInstallationクラスを検索する条件をJSONにして保存しているだけです。Installationクラスはデータストアの一部なので、データストアと同じ条件が利用できます。より細かい条件下でプッシュ通知を行い、高いコンバージョンを目指してください。

REST API リファレンス : クエリの指定方法 | ニフクラ mobile backend

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。