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

Androidバッジ

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

Huaweiバッジ

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

Huaweiバッジの仕組み

  • バッジは、ユーザーのデバイスレベルのバッジ表示設定(デバイスの設定 > 通知 > アプリアイコンバッジで制御)に応じて、数値カウントまたはドットとしてアプリアイコンに表示されます。APIコールは基礎となるカウントを制御し、デバイスが視覚的なスタイルを決定します。
  • huawei_badge_classは、あらゆるバッジ操作に必須です。これは<package_name>.<ActivityName>形式(例:com.example.myapp.MainActivity)のアプリのエントリActivityの完全修飾クラス名です。これは、どのアプリアイコンにバッジを適用するかをHuaweiシステムに伝えます。
  • 同じリクエストでhuawei_badge_set_numhuawei_badge_add_numの両方を設定した場合、huawei_badge_set_numが優先されます。
  • huawei_badge_set_numhuawei_badge_add_numも指定されていない場合(ただしhuawei_badge_classは設定されている場合)、バッジカウントはデフォルトで1増加します
  • huawei_badge_set_num0から99の値を受け付けます。0に設定するとバッジがクリアされます。
  • huawei_badge_add_num1から99の値を受け付けます。例えば、アプリが現在バッジ5を表示しており、huawei_badge_add_num: 3を送信すると、バッジは8になります。

バッジ付き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として追加します
<key>OneSignal_disable_badge_clearing</key>
<true/>
これにより、アプリが開いたときにSDKが自動的に通知を削除したりバッジをリセットしたりするのを防ぎます。

iOSネイティブバッジ管理

OneSignalの自動バッジクリアを無効にした場合、Appleのネイティブ APIを使用してバッジ動作を制御できます。
Appleは、iOS 17でUIApplication.shared.applicationIconBadgeNumberを非推奨にしました。UserNotificationsフレームワークから次のメソッドを使用する必要があります:
バッジ数を設定 アプリアイコンのバッジを特定の値に設定するには:
Swift
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、アプリのデータモデル、またはバックエンドとの同期を使用)。
Swift
// 例:UserDefaultsを使用してバッジ数を保存および取得
let badgeCount = UserDefaults.standard.integer(forKey: "badgeCount")
// 必要に応じてバッジ数を更新
UserDefaults.standard.set(badgeCount, forKey: "badgeCount")
バッジを増減 ペイロードでは相対的な変更(+1や-1など)がサポートされていないため、バッジロジックを手動で管理する必要があります。保存されているバッジ数を更新してから設定します:
Swift
// 例:バッジ数を増加してシステムバッジを更新
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
}
バッジをクリア バッジを完全に削除するには:
Swift

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. 次のいずれかを選択:
    • 特定の数値に設定
    • 相対的な量で増加
iOSプッシュ通知を送信すると、これらのオプションに基づいてバッジ数が変更されます。 アプリが開いている場合、上記の手順に従って自動バッジクリアを無効にしない限り、バッジ数はリセットされます。
バッジチュートリアル完了! 次のステップ: