通知バッジガイド:アプリのエンゲージメント向上を支える基本機能
バッジの価値概要
通知バッジは、モバイルアプリにおけるユーザーエンゲージメントを高めるための重要な機能です。
アプリアイコン上に未読件数を表示することで、アプリの再訪や通知確認を自然に促します。
EngageLab では、クロスプラットフォームに対応したバッジソリューションを提供し、開発者が一貫性のあるユーザー体験を設計できるよう支援しています。
プッシュチャネル別対応状況
モバイル端末メーカーごとの OS 仕様により、すべてのプッシュチャネルが通知バッジに対応しているわけではありません。
主な対応状況は以下のとおりです。
| ベンダー | バッジ/数値バッジ対応 | 実装上のポイント | バッジ制限 |
|---|---|---|---|
| Google FCM | バッジ対応 | システム仕様により既定ではドット表示 | 明確な上限なし |
| Huawei / Honor | 数値バッジ対応 | 通知受信ごとにバッジ数が加算される | 通常 99 まで |
| Xiaomi | 数値バッジ対応 | システム標準ロジックにより通知ごとに +1 | システム依存 |
| OPPO | ベンダーチャネルでのデスクトップ数字バッジ設定に対応 | OPPO オープンプラットフォームでデスクトップ数字バッジ機能を有効化し、badge_operation_type と badge_message_count で設定。権限未開通時はリクエスト成功でもバッジが反映されない場合があります。 |
最終表示上限とデスクトップ方針は OPPO に準拠。 |
| VIVO | ベンダーチャネル自動加算および SDK によるバッジ設定に対応 | ベンダーチャネルは add_badge を使用。ローカル通知と SDK の setNotificationBadge/resetNotificationBadge も対応。vivo バッジ権限の開通とデスクトップバッジの有効化が必要。 |
最終表示上限と挙動は OS バージョンおよびデスクトップ方針に依存。 |
| Meizu | 数値バッジ非対応 | 赤点のみ表示 | – |
| iOS | 数値バッジ対応 | プッシュペイロードまたは SDK API で制御 | 明示的な上限なし |
主な利用シーン
- SNS アプリ:未読メッセージ数のリアルタイム表示
- EC アプリ:未対応注文やアクションの通知
- ニュースアプリ:未読記事数の可視化
iOS バッジ:精密なバッジ管理
技術構成

クライアント側バッジ設定
バッジ設定(コールバック付き)
対応バージョン:v5.2.0 以降
+ (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion
バッジのクリア
MTPush サーバーに保存されているバッジ値をリセットします。
動作としては、以下の設定と同等です。
setBadge: 0
+ (void)resetBadge
サーバー側バッジ設定
プッシュ通知送信時は、ios ペイロード内で badge フィールドを指定します。
| フィールド | 型 | 必須 | 説明 | 補足 |
|---|---|---|---|---|
| badge | Int または String | 任意 | アプリアイコンに表示する数値 | • N、+N、-N の形式で指定可能(N は [0, 99])。• 例として値が 10 の場合、固定値・加算・減算として解釈される。• 0 未満になった場合はクリア扱い。 • 0 または空文字はバッジをクリア。• 未指定の場合は既存の値を維持。 • MTPush SDK では既定値として "+1" が設定される。 |
Huawei / Honor バッジ
クライアント側設定
<!-- AndroidManifest.xml の権限設定 -->
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<uses-permission android:name="com.hihonor.android.launcher.permission.CHANGE_BADGE"/>
管理画面での設定
注意事項
アプリの起動 Activity を正しく設定する必要があります。Huawei と Honor は共通のロジックで動作します。

サーバー側の拡張パラメータ
| パラメータ | 説明 | ビジネス上の利点 |
|---|---|---|
badge_add_num |
バッジ数を加算 | メッセージ系アプリでの不整合防止 |
badge_set_num |
バッジ数を固定値に設定 | タスク管理や状態表示に適する |
badge_class |
起動 Activity を指定 | 正しいアプリにバッジを紐付け |
Xiaomi バッジ
MIUI 6 以降の端末では数値バッジに対応しています。
バッジの制御は MIUI システムが自動的に行います。
📱 通知受信時:バッジが +1
🔄 アプリ起動時:バッジは自動でクリア
⚡ MIUI 6 以降の全バージョンに対応し、多くの Xiaomi 端末をカバーします。
OPPO バッジ:ベンダーサーバー側設定
プッシュリクエストの options.third_party_channel.oppo で設定します。
{
"badge_operation_type": 1
}
badge_operation_type=1:バッジを 1 増加。badge_message_countは不要。badge_operation_type=0:badge_message_countで現在のバッジを上書き。値が0の場合はクリア。- 送信前に OPPO オープンプラットフォームでアプリのデスクトップ数字バッジ機能を有効化する必要があります。アプリ側に追加のバッジ実装は不要です。
vivo バッジ:ベンダーチャネルと SDK による設定
ベンダーチャネルでバッジを自動増加:
{
"add_badge": true
}
このフィールドは options.third_party_channel.vivo にあります。ローカル通知や業務側での未読数同期には、MTPushPrivatesApi.setNotificationBadge で数値を設定し、resetNotificationBadge でクリアできます。実際の効果は vivo バッジ権限、OS バージョン、ユーザーのデスクトップバッジ設定に依存します。OriginOS では +1 にシステム add_badge API を使用し、+N(N > 1)は累計目標値として設定します。
ベストプラクティス
クロスプラットフォーム統一方針
- 段階的対応:iOS、Huawei、Xiaomi では数値バッジを優先
- 代替手段:OPPO、VIVO など非対応端末では赤点表示を活用
- 体験の一貫性:可能な範囲で共通のバッジロジックを維持










