-
Notifications
You must be signed in to change notification settings - Fork 111
[Android] Force-stop Handlingの適用(ExposureNotification SDKアップデート) #136
Comments
https://www.nuget.org/packages/Xamarin.GooglePlayServices.Nearby.ExposureNotification/
個人的には、最新の xamarin/XamarinComponents#1133 こちらはPreAuthorizeにも対応しています(COCOAでは利用していませんが)。 PRは提出済みです(Support PreAuthorization)。Microsoftの人、マージしてくれないかなぁ… |
ご無沙汰しております。 #123 (comment) でおっしゃっていた
対応は不要という回答を Google から頂いたということでしょうか? EDIT 私が理解(推測)している内容を追記しておきます。
この Service は 6時間毎に Play Service から bind されます。 |
Application.onCreateでのWorker登録については質問に含めていますが、ライブラリのアップデートのみとのことでした(後述するテストで動作確認が取れたので、本当に要らないのかと再質問はしていません)。 ぼくの手元でも、つぎのPull RequestでビルドしたAPKをインストールしてテストをしてみました。
この手順で、アプリのJobが復帰していることを確認しています。なお、アプリの設定画面から「強制停止」を選択するとJobは復帰しなかったので、 バックグラウンドでの動作安定化については取り組みを続けていく予定です。ApplicationでのWorker登録に切り替える選択肢も持っておきたいと考えています。 |
それにしてもドキドキしますよね。 |
FYI です。 force-stop された場合は WorkManager 初期化時に Job を復元するようです。 PendingIntent が force-stop でクリアされることを利用して force-stop かどうか判別しているようです。 そこのコメントに書いてありますが、いくつかの OEM (コミットメッセージによると
のどちらか (もしくは両方) の対応を合わせて実施したほうが安全かもしれません。 |
WorkManagerのバージョンアップについてはしない理由がないので、あとは施策として追加でApplication#onCreateで再スケジュールするように変更するかどうかですね。 AlarmManagerでSecurityExceptionについては、現在COCOAがターゲットにしているバージョンで動作するWorkManagerは、バックエンドにAlarmManagerを使わない(JobSchedulerを使う)と理解しているのですが、ぼくもWorkManagerのすべての実装を見たわけではありませんし、リスクを低減する意味でもApplication#onCreate移動は検討したいです(その場合にiOS側のスケジューラーに影響があるかも念のため確認します)。 |
言葉足らずで申し訳ありません。 当該クラスは「force-stop されていたら Job を再スケジュールする」というものです。 ForceStopRunnable では「
このアラームの予定時刻は 10 年後ですので あと、追加でお伝えしたいことがあります。
の対応 ご参考まで。 |
ありがとうございます。そうか、状態判別でAlarmManagerを使っているところでSecurityException出すんですね。 |
たまたま見かけた改善事例があったので貼っておきます(このIssue が適切かどうかは不明ですが) |
その機能リクエストは何らかの問題に関連しますか / Is your feature request related to a problem?
#123 の検討過程で提案をもらったもの。
#123 (comment)
一部端末でバックグラウンドタスクが実行されない。実行されてもキャンセルされる場合がある現象が確認されている。
通常アプリはユーザーやシステムから強制停止されると、次回起動するまでバックグラウンドタスクの実行が制限される(スケジュールされない)。一部の端末ではバッテリー消費を低減する目的で、自動的にアプリを強制停止している可能性がある。
解決策についてお書きください / Describe the solution you'd like
「Force-stop Handling」はExposure Notification APIのバージョン1.5から追加された機能。
Google Play ServicesがEN APIを使っているアプリのプロセスを再起動することで、強制停止の状態から復帰させる。
Force-stop handlingについて、具体的な適用方法についてGoogleから回答を得ている。
とのことで、まず
Xamarin.GooglePlayServices.Nearby.ExposureNotification
をアップデートすることになる(現在は18.0.2-eap.6
)。バージョンアップについては以前Pull Request( #22 )をもらっています。現時点で一気に更新してしまうのは避けて、ライブラリをそれぞれアップデートしていきたいので、こちらで巻き取らせてくださいと調整済です。
Internal Tracking ID: NFR 2262
The text was updated successfully, but these errors were encountered: