FilterBox はバージョン 1.0.0 から「高度なフィルター」に対応しています。通知の任意の属性を条件にでき、「音楽アプリの通知のうち、再生コントロール以外をすべて消す」といった複雑な処理も実現できます。
高度なフィルターは JSON で記述します。JSON の書き方と正規表現を理解したうえでご利用ください。
例
音楽アプリの再生コントロールを残しつつ、ほかの宣伝通知を消す設定例です。
{
"match": "NONE",
"node": [
{
"field": "android.template",
"regex": "MediaStyle"
},
{
"field": "filterbox.field.HAS_BIG_CONTENT_VIEW",
"regex": "true"
}
]
}
FilterBox で新しいルールを作成し、よく使う音楽アプリを選んで「高度なマッチモード」を選択し、上の JSON を貼り付ければ使えます。
構文
1 行ずつ説明します。
"match": "NONE",
マッチモードです。ALL、ANY、NONE の 3 種類に対応しており、すべて大文字で書きます。
それぞれ、通知がすべてのノードにマッチ、いずれかのノードにマッチ、どのノードにもマッチしないときにフィルタされます。
"node": [],
マッチさせるノードの配列です。数に制限はありません。
{
"field": "android.template",
"regex": "MediaStyle"
},
ノード:各ノードには field と regex の 2 つの項目が必要です。
regex は正規表現で、これにマッチするとそのノードがマッチしたことになります。
どの field が使えるかは、FilterBox のタイムラインで最近の通知を開き(メモリ節約のため、古い通知は消去されていることがあります)、「デバッグ情報」を選ぶと確認できます。

このうち filterbox.field.XXX は FilterBox が設定する項目で、それ以外はすべて Notification#extras から読み取った値です。
扱いやすくするため、すべての値は文字列に変換されます。
ヒント
-
なぜ上のルールではノードを 2 つ使うのですか?
多くのアプリ開発者は Android の開発ガイドラインに従い、標準の音楽通知(
MediaStyle)を使っています。一部のアプリはシステムを使わず独自に画面を描画するため、filterbox.field.HAS_BIG_CONTENT_VIEW(独自の展開ビューがあるか)で判別します。どちらのノードにもマッチしない通知だけがフィルタされます。 -
JSON を手で書くと間違えやすいです。
そのとおりです。カンマの抜けなどを防ぐため、JSON エディターの利用をおすすめします。たとえばオンラインの https://jsoneditoronline.org/ が使えます。