プッシュ通知は様々な条件を組み合わせて配信できます。管理画面上では配信対象件数を確認しながら条件を設定できますが、指定できるのは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クラスはデータストアの一部なので、データストアと同じ条件が利用できます。より細かい条件下でプッシュ通知を行い、高いコンバージョンを目指してください。