iOS の Live Activity 作動中に電源を切ると、UserDefaults と FileManager データが消える

問題

公開中のアプリに新たに Live Activity 機能を実装しています。
実装自体は完了し、基本的には問題なく動作しているのですが、表題の問題が発生しました。
Live Activity の起動中に iPhone の電源を切って、再起動し、アプリを立ち上げるとデータが全て消えます。

これまで分かったこと

1) 以下のコードをコメントアウトすると、問題は起きない。
・エラーハンドリングは省略していますが、しても結果は同じでした
・content の内容を変えても、結果は同じでした

Swift

1let activity = try? Activity<TimerAttributes>.request(attributes: TimerAttributes(), content: content, pushType: nil)

2) Live Activity を終了した後は、電源を切ってもデータは消えない。

3) Live Activity を起動中は、電源を切ると必ずデータが消える。
たまに起きる、という問題でなく毎回起きています。

4) UserDefaults や FileManager に保存しているデータ量が少なくても、データは消える。

5) Live Activity の View 側をただのテキスト(Text("a"))にしても、データは消える。

6)アプリをキルしても、データは消えない。iPhone の電源を切った場合のみ消える。

7)App Groups の UserDefaults に保存したデータだけは消えない。
消える:UserDefaults.standard
消えない:UserDefaults(suiteName: "group.aaa.bbb")

考えられるアプローチ

A. この問題を解決する

B. 電源をオフにする直前に、Live Activity を終了する
・電源をオフにする際に処理を実行する方法がわかっておらず、試せておりません
・「バックグラウンドに行く時」だと、Live Activity が機能として成立しないので、「電源を切る時」にする必要があると思っています
・また、これは根本的な問題の解決ではないので、可能ならアプローチAとしたいです

色々と調査をしたのですが、問題を解決できなくて大変困っています。
もしこの問題について何かご存知の方がいらっしゃいましたら、お知恵をお貸しいただけると大変助かります。

よろしくお願いいたします。

コメントを投稿

0 コメント