通知バッジガイド:アプリのエンゲージメント向上を支える基本機能

バッジの価値概要

通知バッジは、モバイルアプリにおけるユーザーエンゲージメントを高めるための重要な機能です。
アプリアイコン上に未読件数を表示することで、アプリの再訪や通知確認を自然に促します。

EngageLab では、クロスプラットフォームに対応したバッジソリューションを提供し、開発者が一貫性のあるユーザー体験を設計できるよう支援しています。


プッシュチャネル別対応状況

モバイル端末メーカーごとの OS 仕様により、すべてのプッシュチャネルが通知バッジに対応しているわけではありません。
主な対応状況は以下のとおりです。

ベンダー バッジ/数値バッジ対応 実装上のポイント バッジ制限
Google FCM バッジ対応 システム仕様により既定ではドット表示 明確な上限なし
Huawei / Honor 数値バッジ対応 通知受信ごとにバッジ数が加算される 通常 99 まで
Xiaomi 数値バッジ対応 システム標準ロジックにより通知ごとに +1 システム依存
OPPO ベンダーチャネルでのデスクトップ数字バッジ設定に対応 OPPO オープンプラットフォームでデスクトップ数字バッジ機能を有効化し、badge_operation_typebadge_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
              
              + (void)setBadge:(NSInteger)value completion:(void (^)(NSError *error))completion

            
このコードブロックはフローティングウィンドウ内に表示されます

バッジのクリア

MTPush サーバーに保存されているバッジ値をリセットします。
動作としては、以下の設定と同等です。

setBadge: 0
              
              setBadge: 0

            
このコードブロックはフローティングウィンドウ内に表示されます
+ (void)resetBadge
              
              + (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"/>
              
              <!-- 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 は共通のロジックで動作します。

alt text


サーバー側の拡張パラメータ

パラメータ 説明 ビジネス上の利点
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
}

            
このコードブロックはフローティングウィンドウ内に表示されます
  • badge_operation_type=1:バッジを 1 増加。badge_message_count は不要。
  • badge_operation_type=0badge_message_count で現在のバッジを上書き。値が 0 の場合はクリア。
  • 送信前に OPPO オープンプラットフォームでアプリのデスクトップ数字バッジ機能を有効化する必要があります。アプリ側に追加のバッジ実装は不要です。

vivo バッジ:ベンダーチャネルと SDK による設定

ベンダーチャネルでバッジを自動増加:

{ "add_badge": true }
              
              {
  "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 など非対応端末では赤点表示を活用
  • 体験の一貫性:可能な範囲で共通のバッジロジックを維持
Icon Solid Transparent White Qiyu
お問い合わせ