DOMとは「Document Object Model」の略だ。 直訳すると、「ドキュメントを物として扱うモデル」になる。HTMLやXMLを扱うための仕組みだ。 主に以下のような特徴をもっている。 ・ツリー構造とも呼ばれる階層構造を取る ・それぞれノードという言葉で説明される ・WEBページとJavaScriptなどのプログラミング言語とを繋ぐ (JavaScript初心者でもすぐわかる!DOMとは何か?)。
https://blog.mbaas.nifcloud.com/entry/2018/10/24/135942
ニフクラはサーバやストレージなど様々な機能を提供していますが、その中にスクリプトとタイマー機能があります。スクリプトはNCMBで提供されているものと同じで、Node.jsやRubyを実行できます。そしてタイマー機能を組み合わせることで、定期的にスクリプトを呼び出せます。
今回はこのスクリプトとタイマー機能を組み合わせて、定期的にプッシュ通知を送信する仕組みを作ります。
定期的なプッシュ通知配信
例えばユーザ登録から1週間、ログインなどが行われていないアカウントに対してプッシュ通知を送ると言った施策が考えられます。管理画面で繰り返し作成することもできますが、スクリプトを使えば自動化できます。
スクリプトをアップロード
まずはスクリプトを作成します。コードは以下のようになります。検索条件をJSONで指定します。今回は1週間前を指定しています。検索条件は常に現在時刻を参照しますので、実行する度に対象が変わります。今回はcreateDateにしていますが、本来は最終ログイン日時を保存しておいて、それを参照すべきでしょう。
const NCMB = require('ncmb'); const config = { "applicationKey": YOUR_APPLICATION_KEY, "clientKey": YOUR_CLIENT_KEY }; const ncmb = new NCMB(config.applicationKey, config.clientKey); module.exports = async (req, res) => { try { const push = new ncmb.Push; await push .set('immediateDeliveryFlag', true) .set('message', '何かお困りですか?') .set('target', ['ios', 'android']) .set('searchCondition', { 'createData': { '$gte': {"__type":"Date", "iso": (new Date(new Date - 7 * 24 * 60 * 60 * 1000)).toISOString()} } }) .send(); res.send('送信しました'); } catch (e) { res.send(e); } }
ファイルをニフクラの管理画面でアップロードします。ヘッダーやボディーなどは {}
として空のオブジェクトを指定します。
タイマーを設定
スクリプトが設置できたら、タイマーを設定します。タイマーは例えば毎日15時に配信すると言った指定をします。実行する対象として、先ほどアップロードしたスクリプトファイルを指定します。
後は待っていればプッシュ通知が自動的に生成されます。
まとめ
タイマー機能を使うことで定期実行するスクリプトが簡単に作成できます。mBaaSのスクリプトは署名処理が伴うので定期実行するのが大変ですが、ニフクラ側のスクリプトは簡単にタイマーから呼び出せます。ぜひお試しを。