LoginSignup
8
1

More than 5 years have passed since last update.

タイマー + スクリプト + mobile backend = プッシュ通知の定期配信

Posted at

(本当は「自作ライブラリの話」というタイトルでしたが、出来が中途半端なので内容を変更しています)

自分は普段、以下プロダクトの開発・運用に携わっています。

今回は、そのうちのスクリプトとmobile backendにと、ニフティクラウド タイマー)を組み合わせて、
mobile backendのプッシュ通知機能を少し補って便利にしてみようと思います。

mobile backendのプッシュ通知機能は、対象端末の絞込配信や配信時刻の予約設定は可能ですが、
毎日x時にプッシュ通知を配信するような定期配信を行うためにはバッチサーバーが必要です。

それをニフティクラウド タイマーで補い、タイマー経由でスクリプトを実行して、
mobile backendのプッシュ通知APIをリクエストしていきます。

準備するもの

  • ニフティクラウドのアカウント
    • ニフティクラウド スクリプトとタイマーを利用するためには、@nifty法人ID が必要です
    • ニフティクラウド mobile backendの利用は、 @nifty個人ID でも可能です

プッシュ通知の準備

ニフティクラウド mobile backendでプッシュ通知を配信するには、
AppleやGoogleから端末固有のデバイストークンを取得し、
それをニフティクラウド mobile backendに登録する必要があります。

以下のドキュメントを参考に、デバイストークンを登録するようなアプリを準備してください。

スクリプトの登録

以下のJavaScriptはニフティクラウド スクリプトから、
ニフティクラウド mobile backendのプッシュ通知登録APIをリクエストするスクリプト例です。
(今回はメッセージ指定と即時配信だけ設定しているものですが、もちろん配信条件など色々変えられます。)

module.exports = function(req, res) {
  var NCMB = require("ncmb");

  //SDKの設定
  //ニフティクラウド mobile backendのAPIキーに各自書き換えてください 
  var ncmb = new NCMB(
    "YOUR_APPLICATION_KEY",
    "YOUR_SECRET_KEY"
  );

  //ニフティクラウド mobile backendのプッシュ通知登録APIを用意
  var push = new ncmb.Push();
  push.set("immediateDeliveryFlag", true) //即時配信設定
    .set("message", "Hello, World!")      //メッセージ
    .set("target", ["android"]);          //配信対象のOSを選択

  //プッシュ通知登録APIをリクエスト
  push.send()
    .then(function(push){
      // 送信後処理
      res.send("push notification is registerd.");
    })
    .catch(function(err){
      // エラー処理
      res.send(err.message);
    });
}

ドキュメントを参考に、ニフティクラウドのダッシュボードからスクリプトを登録してください。
(このあとニフティクラウド タイマーと連携させるので、ニフティクラウド mobile backendのスクリプト機能を使ってはいけません)

タイマーの設定

ニフティクラウド タイマーでは、登録されてあるスクリプトからタイマー作成ができます。

ドキュメントを参考にタイマーを作成してください。

まとめ

ニフティクラウド スクリプトはスクリプトが書ければ(ライブラリが対応していれば)いろんなことに利用できるので、
反対に使い方をイメージしにくい部分があるかもしれません。

今後も色々なところで、ニフティクラウド スクリプトの使用例を紹介していければと思います。
(ニフティクラウド ブログでは @tily さんが slackと連携した例を紹介しています)

よろしくお願いします。

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1