NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
82 stars 18 forks source link

外部DBから抽出したセグメント毎のデバイストークンリストからpush通知を行う方法 #241

Open odapivot opened 9 years ago

odapivot commented 9 years ago

現在push通知サービスの乗り換えを検討しておりまして、 以下の事が実現可能か、重要課題となっておりますので、 教えていただけますでしょうか? nifty-mbaasについて勉強しはじめたばかりで、 おかしなところや間違っているところがあれば、ご指摘いただけますと助かります。

【課題】 外部のDBから抽出したセグメント毎のデバイストークンのリストを元に、 セグメント配信を行いたい。ユーザーの状況により、属するセグメントは毎週変化する。 (前提として、外部サーバーのDBにデバイストークンを保持)

【実現方法】 nifty mbaasのREST APIでこれを実現する場合、 ①installationクラスにセグメントを特定するフィールド(segment_id)をあらかじめ用意 ②セグメント別のデバイストークンのリストをもとに、installationクラスに追加したsegment_idを更新(対象のデバイストークンの件数分、配信端末更新APIをコール) ③対象のsegment_idを条件に、push通知登録を行う。 といった流れになりますでしょうか?

また追加で質問ですが、上記を実現する場合、配信端末更新APIのリクエストの APIパス:/installations/オブジェクトID となっているので、 デバイストークンではなく、オブジェクトIDを外部のDBで管理しておくべきでしょうか? よろしくお願いします。

goofmint commented 9 years ago

@odapivot

1つめの質問についてはその通りかと思います。

2つめの質問については、デバイストークンを二重管理する意味はないので外部DBではオブジェクトIDだけ保存しておくのが良いかと思います。

odapivot commented 9 years ago

回答ありがとうございます。

APIでのPush通知登録時の検索条件ですが、 installations以外のクラスと、デバイストークンをキーにリレーションをはって、 検索対象をしぼりこむことは可能でしょうか?

具体的には、セグメント配信管理クラスでは、 セグメント配信ID、デバイストークン、セグメントタイプなどのパラメータを持っていて、 instalationsのデバイストークンとリレーションを貼って、セグメント配信IDを検索条件として、 配信毎の対象デバイストークンを管理したいと考えております。

goofmint commented 9 years ago

他のクラスのリレーションを使ってデバイストークンをキーに配信条件を保存するのはできないかと思います。基本的にinstallationsの中にある条件だけを指定できる感じです。

なので書かれている内容で配信する場合、installationsにある配信条件フラグをデバイストークン単位でアップデートしてから配信するのが良いのかなと…。

odapivot commented 9 years ago

回答ありがとうございます。

やはり、installationsの条件だけので指定になるんですね。 こちらに続けて投稿すればよかったんですが、 別でinstalation大量更新時のパフォーマンスについて質問させていただいております。 すいませんが、よろしくお願いします。

installationクラスの大量更新のパフォーマンスについて #244 https://github.com/NIFTYCloud-mbaas/UserCommunity/issues/244