俺、サービス売って家買うんだ

Swift, Kotlin, Vue.js, 統計, GCP / このペースで作ってればいつか2-3億で売れるのがポっと出来るんじゃなかろうか

NodeでFCMを利用してAndroidにプッシュ通知を送る

f:id:ie-kau:20170628160920p:plain


すいません!すいません!
めちゃくちゃブログの更新滞っちゃいましたねorz

概要

サーバーサイドのNodeからFCM経由でAndroidアプリにプッシュ通知を送る際の実装メモです。

FCMとは?

Firebase Cloud Messagingのことで、Googleが提供するAndroidの通知サービスです。
これまでは Google Cloud Messaging (GCM)が一般的だったのですが、GoogleがFirebaseを買収したことにより、今後はFCMをメインで利用していくことになります。

事前準備

FCMの認証のための秘密鍵を取得します。

設定のサービスアカウントからいけます。 f:id:ie-kau:20170628161547p:plain

利用するライブラリ

自作するのは面倒なので、さすがに誰か作ってるだろーと思って探したらありました。

github.com

コード

初期設定

const fcm = require('fcm-node')
const fcmProvider = new fcm(require('../keys/privatekey.json'))

送信関数

function sendFcm(title, body, token, payload = {}) {
  const message = {
    to: token,   // register token

    notification: {
      title: title,  // プッシュ通知として表示されるタイトル
      body: body  // プッシュ通知本文
    },

    // アプリに送信するペイロード
    // Number型は送れないので文字列にしておく
    data: Object
        .keys(payload)
        .reduce((accum, current) => {
          accum[current] = String(payload[current])
          return accum
        }, {})
  }

  fcmProvider.send(message, (err, response) => {
    if (err) {
      logger.system.error(`sending fcm is failure : ${err}`)
    } else {
      logger.system.info(`sending fcm is success : ${response}`)
    }
  })
}

APNsにも送信するため個別で関数を用意しています。

ちなみに

Firebaseのコンソールからも通知を送信できるのでプッシュが届かない場合にアプリ側の問題か、サーバー側の問題か切り分けることが出来ます。

Have a happy Notification!