4
3

More than 5 years have passed since last update.

Nuxt.js + Firebase Cloud Messagingを使ってWeb pushをしてみた(実践編)

Last updated at Posted at 2018-12-22

今回はNuxt.js #2 Advent Calendar 2018の9日目に書いた記事の続きを書こうと思います。
まだ見てない方はご覧ください。

概要

今回は実践編ということで、curlを使ってプッシュ通知を送ってみましたが、フォームで入力した文字をそのままプッシュのメッセージとして送るようにしようと思います。

実際の処理の流れ


const messaging = firebase.messaging()
messaging.usePublicVapidKey('PUBLIC KEY')
messaging.requestPermission().then(function() {
  messaging.getToken().then(function(currentToken) {
    const headers = {
      headers: {
        'Content-Type': 'application/json',
        Authorization: 'Bearer {access token}'
      }
    }
    let data = {
      message: {
        to: currentToken,
        notification: {
          title: 'Formで入力したtitle',
          body: 'Formで入力したbody',
          click_action: 'Formで入力したurl'
        }
      }
    }
    axios.post('https://fcm.googleapis.com/fcm/send', data, headers)
  })
  .catch(function(err) {
    console.log('not', err)
  })
})
.catch(function(err) {
  console.log('Unable to get permission to notify.', err)
})

実際の処理はこれだけです。

Authorizationのサーバーキーは
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3237313435302f63613334663962352d333237352d653033322d313537312d3838326566623530326635612e706e67.png
に表示されているサーバーキーを使います。

notificationに書いてある項目は、実際にフォームで入力したdateを渡します。

最後にaxiosを使ってpostすると通知が届くようになります。

今回は実装の量が少ないので、直接method内に記載しましたが、token取得や、axiosでのpushの処理はvuexで処理した方がコードは綺麗になります。

まとめ

今回はフォームで入力した文字をそのまま自分のブラウザにpush通知を送る仕様にしましたが、業務などで使う場合は、ログインや新規登録のタイミングでtoken発行してdbに保存しておけば、そのユーザーのみに個別pushを送ることができます。
簡単にWebでのpush通知ができるのはいいなと思いました。
個人的には今後も使ってみようと思います。

今回書いたコードは後ほどgihubに載せようと思うのでご覧ください。

明日は弊社Androidチームのfujiくんです。
お楽しみに。

4
3
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
4
3