プッシュ通知を位置情報を使って配信したいという声が良く聞かれます。O2Oのような取り組みを行っている場合はもちろん、店舗や交通機関などのアプリでも位置情報で配信対象者を絞り込みたいと考えるケースはよくあるでしょう。
今回はそんな位置情報を使ったプッシュ通知の配信方法を三つ、紹介します。
Installationクラスに位置情報を紐付ける
Installationクラスにはデバイストークンが保存されています。このクラスのデータに対して位置情報を結びつけることで配信対象者を絞り込みます。
利点
- 管理画面で配信対象者数が分かる
欠点
- 位置情報が1デバイストークンに対して1つしか保存できない
最終的な位置情報をターゲットにしたプッシュ通知に対して有効でしょう。
位置情報を別なクラスに保存する
上記の方法では位置情報が一つしか使えないため、別なクラスに履歴として複数の位置情報データを保存しておき、対象になるデバイストークンをリレーションで呼び出すという方法です。この方法の場合、位置情報とInstallationのデータを常にリレーションで結びつけておかなければなりません。
利点
- 一デバイスに対して複数の位置情報を対象にできる
- 過去の位置情報を対象にできる
欠点
- 管理画面からでは指定できない
- アプリから定期的に位置情報をmBaaSに保存する必要がある
プッシュ通知登録APIの絞りこみでは、検索条件はInstallationのみ対象になります。そのため、他クラスの情報をもとにプッシュ通知を作成する際には、常にAPIを経由して行う必要があります。クエリを使ってデータを絞り込んで、そのデータを元にプッシュ通知を作成する形になります。
サイレントプッシュを使う
配信された直後にはダイアログを出さず、デバイス本体の現在の位置情報を使って配信対象であるかどうかを判別します。そして配信対象であると判断された場合はローカルプッシュ通知を使ってアラートを出します。
利点
- 現在の位置情報に応じた細かい配信
- 管理画面で配信設定できる
欠点
- 過去の位置情報を対象にできない
- プッシュ通知が表示されるかどうかは配信してみないと分からない
- 表示されたかどうかは別途プログラミングが必要
- 一般的に配信対象が多くなりがち
配信対象の絞り込みが難しいので、一般的にはインストールされているデバイス全体に対して行われます。その上で受け取ったデバイス側で通知を表示するかどうか判断します。プッシュ通知が開封されたかどうかを取るのも難しいでしょう(別途自分で実装するか、mBaaSから再度自分だけを対象にプッシュ通知を作成する必要があります)。
まとめ
いずれの方法もメリット、デメリットがあります。あなたのアプリにあった方法を選択してください。