top of page

アプリを手作りしています

ホーム: ようこそ!
ホーム: Blog2

[SwiftUI]What I wear counter/着た回数カウンタ - (8) Local Notification Update

  • handmadeapp
  • 2020年3月31日
  • 読了時間: 2分

更新日:2020年4月6日

着た回数カウントのアプリユーザ(夫)から、

Notificationについてバグの報告がありました。


<期待する挙動>

・夜10時に未登録の場合、リマインド(Notification)を受け取る設定にしている。

・その日に着たものを未登録の場合、リマインドが来る。

・その日に着たものを登録済みの場合、リマインドが来ない。


<実際の挙動>

・その日に着たものを未登録の場合、リマインドが来る。→OK

・その日に着たものを登録済みの場合もリマインドが来る。→NG


なぜだろう。。


リマインドを出す条件は、


「UserDefaults.standard.string(forKey: "lastRegisterDate")」は、

とUserDefaultsにセットしてあり、


「Utility.dateFormat」は、

とフォーマットを定義し、String型にして比較。



【可能性としてあるのは、Timezone?】


DefaultはGMTでDate()がセットされるので、

GMTではまだ前日のうちに着たもの登録→登録済みなのにリマインド?


ということで、「Utility.dateFormat」にTimeZoneを設定。


加えて、リマインドメッセージのBodyに、比較対象を出すようにしておく。

こんな感じで日付が出るので、今後の修正に役立つはず。


【Scheduleがセットされていない?】


Timezoneの設定で解決するかと思いきや、数日後、以下のリマインドが。

アプリ側の最終登録日は、「2020/04/02」

何がダメなんだろう。。


【リマインド表示の条件判断タイミング】


よくよく見直してみると、条件判断→当てはまる場合に

「UNUserNotificationCenter.current().add(request) 」。

つまり、「repeats: true」のNotificationを設定時の条件判断でセットしているだけで、

Repeat時に毎回条件判断をするわけでは無い。。


通りで。。


ということは、このリマインドの位置付けとしては、当日の登録有無に関わらず、

「登録のお時間ですよ」ということを知らせてもらうもの、とするしかなさそう。


仕方ない、ということで、シンプルに・・・↓


加えて、この修正対応中に気がついたことが。。


元々のTimeSettingViewは以下の通り。


AlertTimeの「isOn」がTrueになったときに、Notificationをセットするようにしており、

OFF(デフォルト)→時間設定→ONにする、の場合には問題無いが、

ON→時間設定(変更)、の場合に変更された時間が登録されないことが判明。


そのため、「func updateSetTime」にて、

AlertTimeが「isOn」の場合に、Notificationをセットするよう追加。


色々問題ありでした。ユーザが一人で良かった!

 
 
 

最新記事

すべて表示
[SwiftUI] Work-Walk Timer - (2) Play Audio

タイマーアプリの続き。 あらかじめ登録した音を再生する機能に着手していきます。 利用する音は2種類。 ①時間が来たことを知らせる、ししおどしの音(From: https://pocket-se.info/) ②休憩時間の間に流す音楽(From:...

 
 
 

Comments


©2020 by Handmade App. Proudly created with Wix.com

bottom of page