web-dev-qa-db-ja.com

IMPORTANCE_MINを使用してフォアグラウンドサービス通知を通知チャネルに配置することは可能ですか?

現在、アプリケーションをAndroid Oに移行する作業を行っており、現在、通知チャネルに取り組んでいます。

私はさまざまなチャネルをさまざまな 重要度レベル で作成しました。アプリケーションには、新しいアーキテクチャ(よりプッシュ指向)に移行するまで常に実行する必要があるフォアグラウンドサービスがあるため、その通知を配置することを考えました。重要度がIMPORTANCE_MINに設定されているチャネルでは、そこにありますが、ユーザーの迷惑にはならず、ステータスバーにアイコンが配置されません。

ただし、これを実行し、アプリケーションをバックグラウンド([ホーム]または[戻る]ボタンを使用)に配置すると、Androidシステム通知が表示され、アプリがバックグラウンドで実行されていることが通知されます。そう:

Android System notification for a service running in the background

チャネルを変更してIMPORTANCE_LOWを使用するようにすると、問題は解決しますが、通知がより目立ちます。

だから、私の質問は-私がしようとしていることをすべて行うことは可能ですか?フォアグラウンドサービスがある場合はユーザーに表示されるはずなので、システムは開発者にこれを許可しないと思いますが、それは単なる推測であり、これに関するドキュメントは見つかりませんでした。そのため、私はこの質問を投稿します。

2番目の質問は-Oの前に、通知の優先度をPRIORITY_MINに設定した場合、その通知をサービスにバインドしてフォアグラウンドサービスにすることはできますか、それともいつものように失敗しましたか?

編集:Androidシステムが重要度IMPORTANCE_MINのチャネルの通知を表示することを確認しました(ありがとう、M66B )、それで今残っている質問はなぜですか?誰かがこれの背後にある理由を知っていますか、またはどこでもドキュメントを見つけることができますか?これはおそらくトラッカーに報告されるべきバグですか?

12
Anax

この動作は現在文書化されています: https://developer.Android.com/reference/Android/app/NotificationManager.html#IMPORTANCE_MIN

最小通知の重要性:スクロールせずに見える範囲の日陰にのみ表示されます。フォアグラウンドサービスはユーザーが気にするものであると想定されているため、これをService.startForegroundと一緒に使用しないでください。そのため、通知を最小重要度としてマークすることは意味的に意味がありません。 AndroidバージョンOの時点でこれを行うと、バックグラウンドで実行されているアプリに関する優先度の高い通知がシステムに表示されます。

そしてここにも: https://material.io/guidelines/patterns/notifications.html#notifications-settings

Android Oでは、フォアグラウンドサービス通知のチャネルのデフォルトの重要度レベルは、ステータスバーにアイコンが表示されるように、少なくともIMPORTANCE_LOWである必要があります。

目立たないIMPORTANCE_MINレベルを使用しているチャンネルは、Android at IMPORTANCE_LOWから、アプリがバッテリーを使用していることを示す追加の通知をトリガーします。

補足:これは私たちにとって本当に苦痛です。なぜなら、Oの前は、フォアグラウンド通知に提示する興味深い情報がなかったときに、PRIORITY_DEFAULTとPRIORITY_MINを動的に切り替えていたからです。チャネルを使用すると、IMPORTANCEを動的に変更できなくなり、その機能を削除する必要がありました。

13
Josh