質問: ### 前提・実現したいこと iOS 9以降向けで、毎日の歩数を記録するアプリを作成したいと考えております。 CMPedometerを使うことになりますが、これは過去7日間しか情報が取得できません。 アプリが起動されるたびに7日間遡って保存していけば大丈夫な話ですが、もしユーザが1週間以上アプリ起動を忘れた場合でも抜けが無く保存したいのです。 ### 教えていただきたいこと そこで、バックグラウンドで定期的に(例えば1日に1度)歩数の保存処理を実行したいなと思うのですが、その方法が分かりません。 そもそも、iOSではそのような裏側での定期実行は可能でしょうか。 (Androidであれば、裏でサービスを立ち上げて処理を実行することは可能ですが、iOSでは不可能なのでしょうか。。) ### その他 もしバックグラウンドでの処理の実行が不可能である場合、定期的にローカル通知をして、ユーザにアプリの起動を促そうと考えていますが、もし他に何か良い方法やアイディア等がありましたらお教えいただければと思います。 よろしくお願いいたします。
回答: iOSでバックグラウンド処理を常に走らせることはできませんが、7日以内に実行されればよいのであれば Background Fetchで実現可能と考えます。 Backgroud Fetchは不定期に実行され12時間以上間隔があいたことはありますが、 1日に一回は実行されるはずです。 * iOSのBackground Fetchの動作の特徴について http://www.webbanana.org/goroku/2016/07/07/134.php などの記事が参考になります。