オートメーションが実行されるタイミング
オートメーションは、設定したケイデンス(実行の間隔)で、iOSがMarrowのバックグラウンド実行を許す限りの頻度で送信します。Marrowは、Appleがアプリに用意しているバックグラウンドで起動する方法をすべて使っています。正確なタイミングはAppleが決めます。また、iPhoneがロックされている間は、どのアプリもApple Healthを読み取れません。
Marrowのガイド一覧: MCP · セルフホスト版ミラー · オートメーション · ファイル · サポート
Marrowがしていること
- 新しいヘルスケアデータで起動します。Marrowは同期するすべてのデータタイプ(歩数、心拍数、睡眠、ワークアウトなど)について、新しいデータが届いたらバックグラウンドで起動するようApple Healthに依頼しています。Apple Watchやほかのアプリからの新しい計測値で起動することもあります。
- バックグラウンド更新を常に予約しています。Marrowはバックグラウンドに移るとき、約1時間後の更新をiOSに依頼します。更新のたびに次の更新を予約するので、いつも1つが待機しています。
- 開いたときに追いつきます。Marrowを開くと新しいデータをすべて読み込み、実行時期になったオートメーションをすべて送信します。
- 起動するたびに、時期が来たものをすべて送信します。起動するたびに、Marrowは新しいデータを自分のストアに読み込み、ケイデンスの間隔が過ぎたオートメーションをそれぞれ送信します。
- 抜けを埋めます。前回の実行以降を選ぶと、各実行は前回成功した実行以降のすべてに、その前の2日分を加えて送信します。実行が遅れても、抜けた日はすべて送信されます。
- すべての実行を記録します。アクティビティログには、直近30回の実行が時刻と結果とともに残ります。
Appleが決めていること
これらのルールはiOSによるもので、バックグラウンドでApple Healthのデータをエクスポートするすべてのアプリに適用されます。Marrowのどの設定でも変えることはできません。
- 決まった時刻はありません。iOSでは、アプリが自分で選んだ時刻にバックグラウンドで実行することはできません。アプリは起動を依頼でき、タイミングはiOSがバッテリー、ネットワーク、アプリの使用頻度、iPhoneがほかに何をしているかをもとに決めます。ケイデンスは実行と実行の最短の間隔で、時刻表ではありません。「1時間ごと」は、多くても1時間に1回という意味です。
- ロック中は何も実行されません。iPhoneがロックされている間、Apple Healthのデータは暗号化されていて、ロックを解除するまでどのアプリも読み取れません。ロック中は実行が止まり、次にロックを解除した後に追いつきます。
- 実行できる時間は短い。バックグラウンドでの起動は数秒間で、多くは30秒未満です。ペイロードが大きかったり受信側の応答が遅かったりすると、その時間内に終わらないことがあります。
- 低電力モードでは、オフにするまでバックグラウンド更新が保留されます。
- Marrowのアプリのバックグラウンド更新がオンになっている必要があります。オフだと、iOSは予定された更新を行いません。
- スワイプで終了した。AppスイッチャーでMarrowをスワイプして終了すると、もう一度開くまで、iOSがバックグラウンドで起動しないことがあります。
- Apple Watchのデータはまとめて届きます。Apple Watchはデータを計測ごとではなく、ときどきまとめてiPhoneに送ります。そのため、新しいデータとそれによる起動は、計測された時刻より遅れることがあります。
実際にはどうなるか
- 日中iPhoneを使っているとき:実行はおおむねケイデンスに沿って行われます。時間どおりのこともあれば遅れることもあり、1時間抜けることもあります。
- 夜間など、何時間もロックされているとき:その間は実行されず、ロック解除後の実行でそれ以降の分がすべて送信されます。
- 1時間ごとのケイデンスでも、1日にちょうど24回実行されるわけではありません。間隔が空くのはiOSによるアプリのスケジュールのためで、次の実行がその分を埋めます。
できるだけ規則正しく実行させるには
- Marrowのアプリのバックグラウンド更新をオンにします:設定、一般、アプリのバックグラウンド更新。
- 実行を確実にしたいときは、低電力モードをオフにしておきます。
- Marrowはスワイプで終了せず、アプリスイッチャーに残しておきます。
- 前回の実行以降、または想定される最長の間隔より長い範囲を選び、実行が遅れてもすべての日をカバーできるようにします。受信側で指標と日付ごとに最新の値を保持しておけば、重複は問題になりません。
- バックグラウンドの短い時間内に終わるよう、ペイロードは小さく保ちます:生サンプルではなく日ごとの合計、短めの範囲、データの種類ごとに1つのオートメーション。
- 受信側はすぐに応答し、処理はその後で行うようにします。詳しくは受信側を作るをご覧ください。
- 今すぐ実行したいときは、Marrowを開くか、そのオートメーションで今すぐ実行をタップします。
何が起きたかを確認する
- アクティビティログ(オートメーションの「その他のオプション」内):直近30回の実行。失敗した実行にはエラーが表示され、各エラーの意味はトラブルシューティングの表で確認できます。
- あるはずの記録がない場合:その時刻にiOSがMarrowを起動しなかったか、iPhoneがロックされていました。
- 設定、Apple Healthへのアクセス、Apple Healthから読み込み中:Marrowが各データタイプを最後に読み込んだ時刻。ここの時刻が新しければ、Marrowは起動されています。
- 実行時に通知(その他のオプション):確認している間、実行のたびに通知が届きます。
iPhoneを使っているのに長い空白が続く場合は、アクティビティログのスクリーンショットと受信側で記録された時刻を添えてサポートまでご連絡ください。こちらで調べます。