mBaaSお役立ちブログ

プッシュ通知を承認制にする【ログイン状態を確認する】

プッシュ通知は従来のマーケティング手法で言えばメールマーケティングに相当します。つまり一度配信してしまうと、後から取り消すのが難しい拡散方法ということです。そのため企業によっては一旦承認フローを経てからプッシュ通知を送りたいという要望も聞かれます。

そこで独自のプッシュ通知管理画面を作成して、承認フローを経るようにしてみたいと思います。作成していく過程をステップを踏んで説明していきますので、自社のフローに合わせてカスタマイズしてみてください。

今回はログインステータスの確認処理について紹介します。

なぜログインステータスを確認するか

mBaaSの会員管理では、デフォルトではログインは24時間の期限となっています。しかし、SDKで取得できるログインデータはキャッシュされたユーザデータになります(JavaScript SDKの場合はlocalStorageなど)。そのため、ログインのステータスを起動時にチェックしないとデータの保存に失敗するようになってしまいます。

さらに言えば一つのアカウントで持てるセッションIDは一つだけなので、別な端末でログインしてしまうと現在使っているセッションIDが無効になってしまいます。ID、パスワードの使い回しは控えた方が良いでしょう。自分自身でログインしたのであれば、別な端末がログアウト状態になってしまうのも理解できるかと思います。

アプリケーションの表示に確認する

実際の処理としては、メニューを表示する際に確認します。非同期処理なのでPromiseを使います。ログイン状態が問題なければ何もしませんが、もしセッションが切れている場合には this.user を null にします。

module.exports = {
    :
  created: function() {
    if (this.user) {
      this.checkLogin()
        .then(function() {
          
        })
        .catch(function() {
          this.user = null;
        });
    }
  },
  :
}

checkLogin の処理は以下のようにユーザ情報の検索ができるかどうかとしています。通常のユーザ情報は自分だけが閲覧可能になっていますので、セッションが切れている場合には見えないはずです。

methods: {
    :
  checkLogin: function() {
    return this.ncmb.User
      .where({objectId: this.user.objectId})
      .fetch()
  }
}

アプリも定期的に起動させるものもあれば、不定期に起動するものもあります。1週間に1回くらいしか起動しない場合はセッションが毎回切れているかも知れません。アプリのログイン状態は起動時に確認しておいた方が良いでしょう。もし延長したい場合にはアプリ設定の認証有効時間を延ばしてください。

今回のコードはNCMBMania/pushManagerにアップロードされています。実装方法などの参考にしてください。

バックナンバー