iMast
iMast copied to clipboard
プッシュ通知の処理をもう少しまともにする
現状…
- imast-backend 側で WebPush を受け取ると /api/v1/notifications/:id を叩く
- この情報は端末アカウントを超えて共有されないので、回数はユーザーが登録した回数分になる
- ので、例えば押し入れにしまったままだったり下取りに出したりした iPhone 5s 分のプッシュ通知の取得が一生走っている可能性がある
- iMast 側でもプッシュ通知を受け取ると /api/v1/notifications/:id を叩く
- これは実際に受け取れた端末分
これだとバズった時とかSidekiq全再試行とかした時にレートリミットで死ぬ (1通知あたり2*端末分取得が走る) ことがわかったのでなんとかしたい
案
- imast-backend で情報取るのをやめる
- 特にメモリが少ない古い端末だと Notification Service Extension が発火しない可能性があったはず
- なので imast-backend で情報入れないとのっぺらぼうな通知になる可能性がある…
- オプトインが丸いか?
- iMast が imast-backend が取った情報を imast-backend から貰うようにする
- とはいえ APNs のペイロードに乗る大きさでは恐らくないので、一時トークンを発行してそれを渡して取るみたいな感じになりそう?
- でもあんまり一時的にでも機密かもしれないデータを自分で保存するのは微妙
- 適当に暗号化したデータだけ持っておいて APNs で鍵も送ればいい?
- いつまで持てばいいんですか?という問題もあるし
- more...