プッシュ通知には様々な使い方がありますが、その一つにアプリのニュースであったり、新着情報をお知らせするといったものがあります。そしてアプリの中でもお知らせ一覧(またはニュース一覧)画面を持っているものがたくさんあります。これらの情報は重複して管理されることが多いようです。
そこで、データ管理を簡単にするために、プッシュ通知の送信ログをお知らせ一覧として利用する方法を考えてみたいと思います。まず、それらの実現方法と課題についてまとめていきます。
プッシュ通知をどう運用しているか
プッシュ通知の運用方法は主に3パターンに分かれます。
- 全体配信
- 条件配信
- 個別配信
全体配信とは、登録されているデバイストークン全体に対して配信するものです。条件を指定しない分、シンプルな管理が可能ですが、セグメント化されていない分、役立たない内容の配信も行われてしまうことも多くなります。そのため開封率はそれほど高くないでしょう。
条件配信はデバイストークンに条件を指定しておいて、絞り込み条件として使うものです。例えば性別、年齢層、興味のある情報、居住地域などです。配信条件を絞り込む分、より確度の高い配信が可能になります。利用者にとってもマッチした情報が配信される傾向にあるので、開封率も高くなります。
個別配信はよりセグメントを細かくした配信方法です。また、チャットアプリなどで個人宛にメッセージが来た際のプッシュ通知としても使われます。mBaaSの管理画面では配信したプッシュ通知ごとに開封率を取っているため、表示は若干煩雑になりがちです。
このようにプッシュ通知の運用は分かれるため、お知らせとして使う際にも注意が必要です。
プッシュ通知が誰に届いたかは調べる方法
次にお知らせ一覧に使うため、誰に届いたのかを把握しなければなりません。「全体配信」で運用する場合、それほど大きな問題ではありません。自分に届いたプッシュ通知は、デバイストークンの作成日以降のプッシュ通知すべてになります。
条件配信、個別配信の場合は難しそうです。なぜなら、プッシュ通知が届いたタイミングで何らかのコードを実行する方法がないからです。つまりプッシュ通知が届いたというイベントを受け取ることはできません。できるのは次の3つです。
- アプリ実行中にプッシュ通知が届いた
- プッシュ通知を開封した
- サイレントプッシュが届いた
さらにこのサイレントプッシュが届いたという時も注意がいります。「低消費電力モード」「アプリがキルされている」「ユーザが明確に拒否している」場合はサイレントプッシュを送っても何も起きません。プッシュ通知を開封してもらえればいいのですが、毎回ちゃんと開いてくれるとは限りません。プッシュ通知は見たけれど、普通にアプリを起動した場合にはイベントは実行できません。
デバイストークンが削除されるリスク
さらにデバイストークンが削除されるリスクがあります。「全体配信」を使っている場合、プッシュ通知が届かなくてデバイストークンが削除されると、お知らせがすべて読めなくなります。そのため、Installationクラスのデバイストークンとプッシュ通知を直接結びつけない方がよさそうです。
ベストなお知らせ管理方法は
以上のような課題がある中でベストだと思われるお知らせ管理の方法は次のようになります。
全体配信の場合
デバイストークンを登録していないユーザはプッシュ通知の一覧を返します。デバイストークンを登録している場合、その登録日時以降のプッシュ通知の一覧を返します。万一デバイストークンが見つからない場合は、デバイストークンを登録していない状態と見なします。
条件配信の場合
プッシュ通知を配信後、その条件にマッチするデバイストークンを取得して、それぞれ関連づけます。デバイストークンを登録していない場合は全体配信同様の運用になります。
個別配信の場合
プッシュ通知を配信後、そのデバイストークンに対してプッシュ通知を結びつけます。また、認証している場合にはプッシュ通知をそのユーザだけに読み取り権限を付与します。こうすることで、デバイストークンを登録していないユーザに見られるのを防止できます。
まとめ
では次回から実際のコーディングを通じてプッシュ通知のお知らせ化を実装してみましょう。