バックグラウンドでの録音に関するまとめ #293
ooyamatakehisa
started this conversation in
General
Replies: 1 comment
-
これは実験的にはあまり信用できなさそうです。
HelloTranscribeでも同様の現象が生じていることから実験結果は信用できそうです |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
この記事によれば、アプリは一度バックグラウンドに入るとコードの実行はとまる。
そのため、バックグラウンドでのAPI呼び出しや定期実行は行えない。
この記事によれば20~30sはバックグランドに入っても動作し続ける?
ただし、音楽など特定の用途に対しては、
UIBackgroundModes
を指定することで可能になる。ただし、上記モードを指定していてもバックグラウンドでは重い処理を走らせていたらOS側にキルされる可能性がある。
これは @shibukazu の実験で、認識タスクがバックグラウンドで走っていなかったらキルされないけど、走っていたら録音中でもキルされるというもの。
と思っていたが、
UIBackgroundModes
にprocessingを指定すれば重い処理でもバックグラウンドで動作できそう?https://developer.apple.com/documentation/backgroundtasks/bgprocessingtask?language=objc
https://qiita.com/chocoyama/items/d69322932f400a5d012b#background-processing-tasks
beginBackgroundTaskメソッドでiosアプリのライフサイクルにおけるbackgroundの時間を伸ばせる。
これによれば、backgroundではキルされなさそうだけど....
ディスパッチキューのアイテムをキャンセルする方法
https://khanumair-9430.medium.com/gcd-dispatchworkitem-swift-cancelling-a-task-in-dispatch-68da958c5b20
バックグラウンドでキルされる直前を検知するためのメソッドもある
とってもバックグラウンド実行について細かくてまとめてくれてる記事
https://medium.com/swlh/handling-background-tasks-in-ios-13-67f717d94b3d
歴史的経緯
最初 #152, #153 あたりでバックグラウンドでには一度録音をやめたら録音が再開できないという問題を話していた。実際、このスレッドでバックラウンドでは録音が開始できないと書いてある。これを回避するために、バックグラウンドでは録音の中断を回避して最後にまとめて認識をするという方針になり #183 で実装された。
関連issue
PR
Beta Was this translation helpful? Give feedback.
All reactions