> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# バッジ

> iOS、Android、HuaweiのプッシュNotificationアプリアイコンバッジ数を管理します。自動クリア、APIコントロール、ネイティブバッジロジックを含みます。

バッジは、モバイルアプリアイコンに表示される小さな番号付きドットです。ユーザーの注意を引き、エンゲージメント行動に影響を与えることができます。特にiOSでは、バッジには追加のセットアップが必要で、以下に概説するように柔軟な制御が提供されています。

<Note>
  Android Web Push通知の場合、バッジはアプリアイコンではなく、通知に表示される小さなアイコンを指し、カスタマイズできます。[Web Push Badges](./push#badges)を参照してください。
</Note>

***

## Androidバッジ

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

***

## Huaweiバッジ

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

### Huaweiバッジの仕組み

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

#### パラメータ

| パラメータ                  | タイプ     | 範囲   | 説明                                                                                                      |
| ---------------------- | ------- | ---- | ------------------------------------------------------------------------------------------------------- |
| `huawei_badge_class`   | string  | —    | **（必須）** アプリのランチャーActivityの完全修飾クラス名（例：`com.example.myapp.MainActivity`）。バッジを付けるアプリアイコンをHuaweiシステムに伝えます。 |
| `huawei_badge_set_num` | integer | 0–99 | バッジを正確な数値に設定します。`0` はバッジをクリアします。                                                                        |
| `huawei_badge_add_num` | integer | 1–99 | 既存のバッジカウントをこの量だけ増加させます。                                                                                 |

#### 動作ルール

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

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

<Tabs>
  <Tab title="ダッシュボード">
    1. **Messages > Push**または**Templates**に移動
    2. **Platform Settings > Send to Huawei Android > Badge**の下
    3. 次のいずれかを選択：
       * **設定しない** — この通知はバッジに影響しません
       * **設定** — バッジを特定の数値（0-99）に設定
       * **増加** — 既存のバッジカウントを増加（1-99）
  </Tab>

  <Tab title="API">
    [Create message](/reference/create-message) APIで次のパラメータを使用します：

    * `huawei_badge_class` — *（文字列、バッジに必須）* アプリのランチャーActivityの完全修飾クラス名（例：`"com.example.myapp.MainActivity"`）
    * `huawei_badge_set_num` — *（整数、0-99）* バッジカウントをこの正確な数値に設定します。`0`に設定するとバッジがクリアされます。
    * `huawei_badge_add_num` — *（整数、1-99）* 既存のバッジカウントをこの数値だけ増加させます。`huawei_badge_set_num`と共に省略された場合、デフォルトで1増加します。

    **バッジを特定の数値に設定：**

    ```json theme={null}
    {
      "huawei_badge_class": "com.example.myapp.MainActivity",
      "huawei_badge_set_num": 5
    }
    ```

    **バッジを特定の量だけ増加：**

    ```json theme={null}
    {
      "huawei_badge_class": "com.example.myapp.MainActivity",
      "huawei_badge_add_num": 1
    }
    ```

    **バッジをクリア：**

    ```json theme={null}
    {
      "huawei_badge_class": "com.example.myapp.MainActivity",
      "huawei_badge_set_num": 0
    }
    ```
  </Tab>
</Tabs>

### バッジのクリア

Huaweiはユーザーがアプリを開いたり通知をタップしたりしても、バッジを**自動的にクリアしません**。バッジをクリアするには、2つのオプションがあります：

* **APIまたはダッシュボード経由**：`huawei_badge_set_num`を`0`に設定した通知を送信します（またはダッシュボードで**設定 > 0**を使用）。目に見える通知を表示したくない場合は、[データ/バックグラウンド通知](./data-notifications)を使用できます。
* **クライアントサイドコード経由**：アプリはHuaweiバッジAPIを使用してローカルでバッジをクリアできます。これには`AndroidManifest.xml`に`com.huawei.android.launcher.permission.CHANGE_BADGE`権限が必要です。実装の詳細については、[Huaweiバッジ開発ガイド](https://developer.huawei.com/consumer/en/doc/hmscore-guides/android-badging-0000001050042083)を参照してください。

<Note>
  `huawei_badge_set_num`パラメータにはEMUI 10.0.0以降およびPush SDK 10.1.0以降が必要です。古いデバイスでは`huawei_badge_add_num`のみがサポートされています。
</Note>

***

## iOSバッジ

iOSでバッジ数が正しく増加するようにするには、次を設定する必要があります：

* `OneSignalNotificationServiceExtension`
* App Groups

完全な手順については、[Mobile SDK setup](./mobile-sdk-setup)を参照してください。

デフォルトでは、OneSignal SDKは次のことを行います：

1. アプリが開かれたときにアプリアイコンバッジをクリアします。
2. 通知センターから通知を削除します。

通知を保持し、バッジロジックを手動で管理したい場合（例：独自のカウンターを使用したり、デバイス間で状態を同期したりする場合）、この自動動作を無効にできます。

**手動バッジ制御の一般的なユースケース**

* アプリの起動または再開時にバッジをリセット
* フォアグラウンドで通知を受信したときにバッジを増加
* メッセージが読まれたり削除されたりしたときに減少
* App Groupsまたはバックエンドを介してデバイス間またはアプリ拡張機能間でバッジ状態を同期

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

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

<Frame caption="OneSignal_disable_badge_clearing を YES に設定した info.plist。">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/ea4fbad85bfcb4909ce88668e3882fc8749624c781a66d7c78c440b7e267999c-Screenshot_2025-04-01_at_4.37.05_PM.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=e2aafae9e93e16b63e263f34770f262a" alt="Xcode Info.plist editor showing OneSignal_disable_badge_clearing set to YES" width="2284" height="1484" data-path="images/docs/ea4fbad85bfcb4909ce88668e3882fc8749624c781a66d7c78c440b7e267999c-Screenshot_2025-04-01_at_4.37.05_PM.png" />
</Frame>

```xml theme={null}
<key>OneSignal_disable_badge_clearing</key>
<true/>
```

これにより、アプリが開いたときにSDKが自動的に通知を削除したりバッジをリセットしたりするのを防ぎます。

#### iOSネイティブバッジ管理

OneSignalの自動バッジクリアを無効にした場合、Appleのネイティブ APIを使用してバッジ動作を制御できます。

<Warning>
  Appleは、iOS 17で`UIApplication.shared.applicationIconBadgeNumber`を非推奨にしました。[UserNotificationsフレームワーク](https://developer.apple.com/documentation/UserNotifications/UNUserNotificationCenter/setBadgeCount\(_:withCompletionHandler:\))から次のメソッドを使用する必要があります：
</Warning>

**バッジ数を設定**

アプリアイコンのバッジを特定の値に設定するには：

```swift theme={null}
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 theme={null}
// 例：UserDefaultsを使用してバッジ数を保存および取得
let badgeCount = UserDefaults.standard.integer(forKey: "badgeCount")
// 必要に応じてバッジ数を更新
UserDefaults.standard.set(badgeCount, forKey: "badgeCount")
```

**バッジを増減**

ペイロードでは相対的な変更（+1や-1など）がサポートされていないため、バッジロジックを手動で管理する必要があります。保存されているバッジ数を更新してから設定します：

```swift theme={null}
// 例：バッジ数を増加してシステムバッジを更新
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 theme={null}
if #available(iOS 17.0, *) {
  UNUserNotificationCenter.current().setBadgeCount(0)
} else {
  UIApplication.shared.applicationIconBadgeNumber = 0
}
```

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

OneSignalダッシュボードまたはAPIを使用してバッジ数を設定できます。

<Tabs>
  <Tab title="ダッシュボード">
    1. **Messages > Push**または**Templates**に移動。
    2. **Platform Settings > Send to Apple iOS > Badges**の下。
    3. 次のいずれかを選択：
       * 特定の数値に設定。
       * 相対的な量で増加。

    <Frame caption="OneSignalダッシュボードメッセージフォームでバッジを設定。">
      <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a6f4a4c0d5869fd9ba5c83ded26752f83c1350c4f6f5213a985cf522fa4d0387-Screenshot_2025-04-01_at_4.42.50_PM.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=8b428dfec1995ea5ec296d717bad9524" alt="OneSignal dashboard push message form showing iOS badge count options" width="1528" height="558" data-path="images/docs/a6f4a4c0d5869fd9ba5c83ded26752f83c1350c4f6f5213a985cf522fa4d0387-Screenshot_2025-04-01_at_4.42.50_PM.png" />
    </Frame>
  </Tab>

  <Tab title="API">
    [Create message](/reference/create-message) APIで次のパラメータを使用します：

    * `ios_badgeType` — `SetTo`または`Increase`に設定。
    * `ios_badgeCount` — 設定または増加する数値。

    ```json theme={null}
    {
      "ios_badgeType": "Increase",
      "ios_badgeCount": 1
    }
    ```
  </Tab>
</Tabs>

iOSプッシュ通知を送信すると、これらのオプションに基づいてバッジ数が変更されます。

アプリが開いている場合、[自動バッジクリアを無効](#自動通知とバッジクリアを無効にする)にしない限り、バッジ数はリセットされます。

***

## FAQ

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

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

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

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

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

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

***

## 関連ページ

<Columns cols={2}>
  <Card title="Android通知カテゴリ" icon="android" href="./android-notification-categories">
    Android上の通知チャンネルごとにバッジの表示と動作を制御します。
  </Card>

  <Card title="Huawei認証" icon="mobile" href="./authorize-onesignal-to-send-huawei-push">
    OneSignalでHuaweiプッシュメッセージを設定します。
  </Card>

  <Card title="Push概要" icon="bell" href="./push">
    Web Pushバッジを含むプッシュ通知機能の完全なリファレンスです。
  </Card>

  <Card title="モバイルSDKセットアップ" icon="code" href="./mobile-sdk-setup">
    iOSのバッジ前提条件を含むOneSignal SDKを設定します。
  </Card>
</Columns>
