メインコンテンツへスキップ
バッジは、モバイルアプリアイコンに表示される小さな番号付きドットです。ユーザーの注意を引き、エンゲージメント行動に影響を与えることができます。特にiOSでは、バッジには追加のセットアップが必要で、以下に概説するように柔軟な制御が提供されています。
Android Web Push通知の場合、バッジはアプリアイコンではなく、通知に表示される小さなアイコンを指し、カスタマイズできます。Web Push Badgesを参照してください。

Androidバッジ

Androidアプリアイコンのバッジ動作は、Android notification categoriesを通じて管理できます。カテゴリ(チャネル)がバッジを表示するかどうかを制御し、カテゴリごとにバッジ動作を設定できます。

Huaweiバッジ

Huaweiデバイスでは、ユーザーのデバイス設定に応じて、バッジはアプリアイコン上に数字またはドットとして表示されます。バッジは未読メッセージや保留中のアクションを示すのに役立ち、ユーザーがアプリを開くよう促します。OneSignalでは、ダッシュボードまたはAPIを通じてHuaweiバッジカウントを直接制御できます。

Huaweiバッジの仕組み

バッジはアプリアイコンに数値カウントまたはドットとして表示されます。これはユーザーのデバイス設定(設定 > 通知 > アプリアイコンバッジ)によって異なります。APIコールが基礎となるカウントを制御し、デバイスが視覚的なスタイルを決定します。

パラメータ

パラメータタイプ範囲説明
huawei_badge_classstring(必須) アプリのランチャーActivityの完全修飾クラス名(例:com.example.myapp.MainActivity)。バッジを付けるアプリアイコンをHuaweiシステムに伝えます。
huawei_badge_set_numinteger0–99バッジを正確な数値に設定します。0 はバッジをクリアします。
huawei_badge_add_numinteger1–99既存のバッジカウントをこの量だけ増加させます。

動作ルール

  • huawei_badge_class はあらゆるバッジ操作に必須です。
  • huawei_badge_set_numhuawei_badge_add_num の両方が提供された場合、huawei_badge_set_num が優先されます。
  • どちらも提供されていない場合(ただし huawei_badge_class が設定されている場合)、バッジカウントはデフォルトで1増加します。

バッジ付きHuaweiプッシュを送信

  1. Messages > PushまたはTemplatesに移動
  2. Platform Settings > Send to Huawei Android > Badgeの下
  3. 次のいずれかを選択:
    • 設定しない — この通知はバッジに影響しません
    • 設定 — バッジを特定の数値(0-99)に設定
    • 増加 — 既存のバッジカウントを増加(1-99)

バッジのクリア

Huaweiはユーザーがアプリを開いたり通知をタップしたりしても、バッジを自動的にクリアしません。バッジをクリアするには、2つのオプションがあります:
  • APIまたはダッシュボード経由huawei_badge_set_num0に設定した通知を送信します(またはダッシュボードで設定 > 0を使用)。目に見える通知を表示したくない場合は、データ/バックグラウンド通知を使用できます。
  • クライアントサイドコード経由:アプリはHuaweiバッジAPIを使用してローカルでバッジをクリアできます。これにはAndroidManifest.xmlcom.huawei.android.launcher.permission.CHANGE_BADGE権限が必要です。実装の詳細については、Huaweiバッジ開発ガイドを参照してください。
huawei_badge_set_numパラメータにはEMUI 10.0.0以降およびPush SDK 10.1.0以降が必要です。古いデバイスではhuawei_badge_add_numのみがサポートされています。

iOSバッジ

iOSでバッジ数が正しく増加するようにするには、次を設定する必要があります:
  • OneSignalNotificationServiceExtension
  • App Groups
完全な手順については、Mobile SDK setupを参照してください。 デフォルトでは、OneSignal SDKは次のことを行います:
  1. アプリが開かれたときにアプリアイコンバッジをクリアします。
  2. 通知センターから通知を削除します。
通知を保持し、バッジロジックを手動で管理したい場合(例:独自のカウンターを使用したり、デバイス間で状態を同期したりする場合)、この自動動作を無効にできます。 手動バッジ制御の一般的なユースケース
  • アプリの起動または再開時にバッジをリセット
  • フォアグラウンドで通知を受信したときにバッジを増加
  • メッセージが読まれたり削除されたりしたときに減少
  • App Groupsまたはバックエンドを介してデバイス間またはアプリ拡張機能間でバッジ状態を同期

自動通知とバッジクリアを無効にする

アプリのinfo.plistに、キー:OneSignal_disable_badge_clearingをブール型で値YESとして追加します
Xcode Info.plist editor showing OneSignal_disable_badge_clearing set to YES
<key>OneSignal_disable_badge_clearing</key>
<true/>
これにより、アプリが開いたときにSDKが自動的に通知を削除したりバッジをリセットしたりするのを防ぎます。

iOSネイティブバッジ管理

OneSignalの自動バッジクリアを無効にした場合、Appleのネイティブ APIを使用してバッジ動作を制御できます。
Appleは、iOS 17でUIApplication.shared.applicationIconBadgeNumberを非推奨にしました。UserNotificationsフレームワークから次のメソッドを使用する必要があります:
バッジ数を設定 アプリアイコンのバッジを特定の値に設定するには:
import UserNotifications
import UIKit

if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(5) { error in
    if let error = error {
      print("バッジ数の設定に失敗しました: \(error.localizedDescription)")
    } else {
      print("バッジ数が正常に更新されました。")
    }
  }
} else {
  UIApplication.shared.applicationIconBadgeNumber = 5
}
現在のバッジ数を取得 iOSは、システムから現在のバッジ数を取得するメソッドを提供していません。アプリの状態でバッジ数を追跡する必要があります(例:UserDefaults、アプリのデータモデル、またはバックエンドとの同期を使用)。
// 例:UserDefaultsを使用してバッジ数を保存および取得
let badgeCount = UserDefaults.standard.integer(forKey: "badgeCount")
// 必要に応じてバッジ数を更新
UserDefaults.standard.set(badgeCount, forKey: "badgeCount")
バッジを増減 ペイロードでは相対的な変更(+1や-1など)がサポートされていないため、バッジロジックを手動で管理する必要があります。保存されているバッジ数を更新してから設定します:
// 例:バッジ数を増加してシステムバッジを更新
let currentCount = UserDefaults.standard.integer(forKey: "badgeCount")
let updatedCount = max(0, currentCount + 1)
UserDefaults.standard.set(updatedCount, forKey: "badgeCount")

if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(updatedCount)
} else {
  UIApplication.shared.applicationIconBadgeNumber = updatedCount
}
バッジをクリア バッジを完全に削除するには:
if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(0)
} else {
  UIApplication.shared.applicationIconBadgeNumber = 0
}

バッジ付きiOSプッシュを送信

OneSignalダッシュボードまたはAPIを使用してバッジ数を設定できます。
  1. Messages > PushまたはTemplatesに移動。
  2. Platform Settings > Send to Apple iOS > Badgesの下。
  3. 次のいずれかを選択:
    • 特定の数値に設定。
    • 相対的な量で増加。
OneSignal dashboard push message form showing iOS badge count options
iOSプッシュ通知を送信すると、これらのオプションに基づいてバッジ数が変更されます。 アプリが開いている場合、自動バッジクリアを無効にしない限り、バッジ数はリセットされます。

FAQ

iOSでバッジ数が増加しないのはなぜですか?

OneSignalNotificationServiceExtensionとApp Groupsを設定していることを確認してください。これらがないと、バッジ数を正しく増加させることができません。詳細な手順についてはMobile SDK setupを参照してください。

Huaweiのバッジをクリアするにはどうすればいいですか?

huawei_badge_set_num0に設定した通知を送信するか、ダッシュボードで設定 > 0を使用します。また、目に見える通知を表示せずにバッジをクリアするためにデータ/バックグラウンド通知を使用することもできます。あるいは、Huaweiバッジ APIを使用してクライアント側でバッジをクリアします。

ウェブプッシュのバッジを設定できますか?

いいえ。アプリアイコンバッジはiOS、Android、Huaweiのみでサポートされています。Android Web Pushの場合、「バッジ」は通知自体に表示される小さなアイコンを指します — Web Push Badgesを参照してください。

関連ページ

Android通知カテゴリ

Android上の通知チャンネルごとにバッジの表示と動作を制御します。

Huawei認証

OneSignalでHuaweiプッシュメッセージを設定します。

Push概要

Web Pushバッジを含むプッシュ通知機能の完全なリファレンスです。

モバイルSDKセットアップ

iOSのバッジ前提条件を含むOneSignal SDKを設定します。