Foreground Service と歩んだ運用記:登山アプリが制約と向き合ってきた軌跡
rakuishi株式会社ヤマップ
私たちが開発する登山アプリ YAMAP では、登山中の位置情報記録(location)、オフライン地図ダウンロード(dataSync)、画面録画(mediaProjection)という、foregroundServiceType が異なる複数の Foreground Service を 8 年以上運用してきました。 Foreground Service はステータスバーに通知を表示しながら処理を非同期で実行できる仕組みですが、Android 8 で startForegroundService() が導入されて以来、OS バージョンごとに制約が増え続けてきました。foregroundServiceType の必須化(Android 10)、バックグラウンドからの起動禁止(Android 12)、Play Console での申告の必須化(Android 14)、dataSync の6時間タイムアウト(Android 15)、そして Android 17 で導入されるバックグラウンドでの音声操作のサイレント失敗──。 本セッションでは、公式ドキュメントだけでは見えない実プロダクトでの運用知を元に、Android の非同期処理(Worker, ForegroundService)の整理から、Foreground Service の Android 8 から今までの歴史、実装方法、実運用で遭遇したリジェクトやクラッシュをどのように解決したかを扱います。
対象者
- Foreground Service の概要を掴みたい方 - Worker と Foreground Service の使い分けに悩んでいる方 - 位置情報・メディア処理など、長時間バックグラウンド処理を扱うアプリの開発者