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

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

ニフクラのタイマー機能を使ってスクリプトを定期実行する

DOMとは「Document Object Model」の略だ。 直訳すると、「ドキュメントを物として扱うモデル」になる。HTMLやXMLを扱うための仕組みだ。 主に以下のような特徴をもっている。 ・ツリー構造とも呼ばれる階層構造を取る ・それぞれノードという言葉で説明される ・WEBページとJavaScriptなどのプログラミング言語とを繋ぐ (JavaScript初心者でもすぐわかる!DOMとは何か?)。

https://blog.mbaas.nifcloud.com/entry/2018/10/24/135942

f:id:mbaasdevrel:20190520140341p:plain

ニフクラはサーバやストレージなど様々な機能を提供していますが、その中にスクリプトとタイマー機能があります。スクリプトは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);
  }
}

ファイルをニフクラの管理画面でアップロードします。ヘッダーやボディーなどは {} として空のオブジェクトを指定します。

f:id:mbaasdevrel:20190520140316p:plain

タイマーを設定

スクリプトが設置できたら、タイマーを設定します。タイマーは例えば毎日15時に配信すると言った指定をします。実行する対象として、先ほどアップロードしたスクリプトファイルを指定します。

f:id:mbaasdevrel:20190520140341p:plain

後は待っていればプッシュ通知が自動的に生成されます。

まとめ

タイマー機能を使うことで定期実行するスクリプトが簡単に作成できます。mBaaSのスクリプトは署名処理が伴うので定期実行するのが大変ですが、ニフクラ側のスクリプトは簡単にタイマーから呼び出せます。ぜひお試しを。

中津川 篤司

中津川 篤司

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