Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ローカル通知に移行する #558

Merged
merged 165 commits into from
Apr 16, 2022
Merged

Conversation

bannzai
Copy link
Owner

@bannzai bannzai commented Apr 3, 2022

Abstract

Pilllの通知をすべてローカル通知に移行できないかをチェックする

Pros

  • サーバーの処理時間とユーザーの服用時間がほぼ同時の場合とかに通知が来てしまう問題もこれで解消できる。処理時間のラグが0になる
  • タイムゾーンが端末のタイムゾーンになるのでサーバーで一括で処理した場合にタイムゾーンをいちいち考慮する。みたいな問題をなくせてローカライズしやすい
  • オフラインでも使える
    • ただしクイックレコードはオンラインじゃないと記録できない
  • サーバー使わない
    • サーバー代も浮く。頻繁に呼ぶ処理なので数千円浮きそう(1000~4000円/month。予想)
    • サーバーがインフラ的に、コードのバグ的にダウンしててもユーザーに影響無しで使える

Cons

  • バグが起きた場合に、クラッシュ等では無いのでサーバーみたいにバグの原因をログとDBを見て判断する。といったことがやりにくくなる
  • 事前に登録するので動的な文言を出すとかは弱い
  • Flutterのコードが複雑になる
  • バグがあった場合に修正のアップデートが必ず必要

LocalNotificatioでできないこと

RemoteNotificationは、特定の時刻になったら条件に一致するユーザーに通知の内容を決定して送る。これに対して、LocalNotificationの場合は事前に 特定の時刻に向けて通知の内容を作成して登録することになる。なので以下のことはできない。

主にできないことは表示内容についてなので、主機能部分である「特定の時刻に特定の内容の通知を送る」はできるので大きな問題はないと思っている。できないことに対しての代案があればそれも書く

  • 通知の種類に応じてタイトルや文言を可変にする
    • 服用通知での飲み忘れが複数日あったら文言を変えるや、服用モードによって 日目 ・ 番 ができない
      • 番号表示統一でいく
    • その日にのみ忘れているピル番号の特定はできない。複数飲み忘れが検知できない
      • その日に飲む予定のピル番号を表示する
    • バッジの数字を飲み忘れに応じて増減させる
      • 数字無しで行く
      • 厳密にはこれは実現できるかもしれないが今はやらない。Local Notificationを受け取った後にDBからデータを引っ張ってきて未読件数をバッジ表示する。といったことならできるかも。と思っているが、前半の Local Notificationを受け取ったら みたいな処理は今回書かないことにする
動作確認用

服用通知

  • 設定画面から通知時刻を変更・追加・削除
  • 初期設定完了時
  • ピルシート追加時
  • 休薬期間開始時に登録しているものを消す
  • 休薬期間明けに登録する
  • リマインダーの設定のON/OFF
  • 休薬/偽薬期間の通知のON/OFF
  • ピルシート破棄
  • 今日飲む番号変更
  • 自動作成の時?これどうしようかな → サイレントプッシュ できないからバックエンドからの通知

新しいピルシートを作成しました

  • サイレントプッシュから通知を作成する できない
  • シート作成時
  • 番号変更時
  • 破棄の時に解除

今日から新しいシートがはじまります

  • 通知をFlutterに移行する
  • シート作成時
  • 番号変更時
  • 破棄の時に解除

休薬中です

  • 休薬期間開始時に登録し直す
  • 球役期間終了時に登録しているものを消す

追加するUI

  • Local Notification が登録から最低2分は開けないと通知が来ないみたい。コードでは念のため5分開けている。リマインダーの時刻の設定画面でも説明を入れたい。ここでは10分でいれる。今から10分後に初めて通知が来ます旨を入れる。文言は後で考える

Checked

  • Analyticsのログを入れたか
  • 境界値に対してのUnitTestを書いた
  • パターン分岐が発生するWidgetに対してWidgetTestを書いた
  • リリースノートを追加した

TODO

  • 通知文言のカスタマイズからDescriptionの設定を消す

@bannzai bannzai marked this pull request as draft April 3, 2022 23:53
@bannzai bannzai force-pushed the add/library/local_notification branch from 45b554a to caf1069 Compare April 4, 2022 21:58
@bannzai bannzai mentioned this pull request Apr 8, 2022
4 tasks
@bannzai bannzai force-pushed the add/library/local_notification branch from eb2ad80 to 2aef9fc Compare April 8, 2022 00:09
@bannzai bannzai changed the title Add local notification package ローカル通知に移行する Apr 16, 2022
@bannzai bannzai marked this pull request as ready for review April 16, 2022 22:00
@bannzai bannzai merged commit 7ae3bf4 into main Apr 16, 2022
@bannzai bannzai deleted the add/library/local_notification branch April 16, 2022 22:00
@bannzai bannzai mentioned this pull request Dec 18, 2022
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant