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

Androidバッジ

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

iOSバッジ

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

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

アプリのinfo.plistに、キー:OneSignal_disable_badge_clearingをブール型で値YESとして追加します

`OneSignal_disable_badge_clearing`をオフ(`YES`に設定)にしたinfo.plistの例。

<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を使用してバッジ数を設定できます。
  • ダッシュボード
  • API
  1. Messages > PushまたはTemplatesに移動
  2. Platform Settings > Send to Apple iOS > Badgesの下
  3. 次のいずれかを選択:
    • 特定の数値に設定
    • 相対的な量で増加

OneSignalダッシュボードメッセージフォームでバッジを設定。

iOSプッシュ通知を送信すると、これらのオプションに基づいてバッジ数が変更されます。 アプリが開いている場合、上記の手順に従って自動バッジクリアを無効にしない限り、バッジ数はリセットされます。
バッジチュートリアル完了! 次のステップ: