> ## 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.

# Web SDKリファレンス

> 初期化、ユーザー管理、プッシュ通知、スライドダウンプロンプト、デバッグメソッドを含むOneSignal Web SDK v16の完全なAPIリファレンス。Webプッシュ通知の実装、ユーザーサブスクリプションの管理、Email/SMS機能の統合方法を学びます。

## セットアップとデバッグ

OneSignalの呼び出しを`OneSignalDeferred.push(async function() { ... })`でラップする必要があることに気付くかもしれません。

`function()`内に必要な数のメソッドを追加できます。

OneSignal SDKは、ページで`defer`属性を使用して読み込まれます。例：

`<script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>`

これは、OneSignalコードがHTML文書が完全に解析された後に実行されることを意味し、OneSignal SDKによるサイトのブロッキングを防ぎます。ただし、これは`OneSignalDeferred`変数の存在に依存するページスクリプトに問題をもたらします。これを解決するには、OneSignalをサイトに追加する際に、次のように開始する必要があります：

`window.OneSignalDeferred = window.OneSignalDeferred || [];`

これにより`OneSignalDeferred`変数が作成され、OneSignalがすでに読み込まれている場合は、読み込まれたインスタンスに割り当てられます。それ以外の場合、OneSignal変数は空の配列 - `[]`と等しくなります。

すべての配列には[`.push()関数`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)があるため、この時点で`OneSignalDeferred`変数は、プッシュする関数の配列にすぎません。SDKが最終的に読み込まれると、SDK は[これまでにプッシュされたすべての関数を処理し、.push()を再定義します](https://github.com/OneSignal/OneSignal-Website-SDK/blob/03cd16cacb79ff6d37156878d4f59ebf31ad8044/src/OneSignal.js#L2050)。

### `init()`

OneSignal SDKを初期化します。これは、サイトの各ページの`<head>`タグで一度呼び出す必要があります。`ONESIGNAL_APP_ID`は、[Keys & IDs](./keys-and-ids)で確認できます。

<Note>
  OneSignal SDKの初期化を遅延させたい場合は、[プライバシーメソッド](#privacy)の使用をお勧めします。
</Note>

<CodeGroup>
  ```javascript JavaScript theme={null}
  window.OneSignalDeferred = window.OneSignalDeferred || [];
  OneSignalDeferred.push(async function(OneSignal) {
    await OneSignal.init({
      appId: "ONESIGNAL_APP_ID",
    });
  });
  ```
</CodeGroup>

<Warning>
  Initオプションは[カスタムコードセットアップ](./web-push-custom-code-setup)でのみ機能します。それ以外の場合は、OneSignalダッシュボードで構成されます。
</Warning>

|              パラメーター              |   タイプ   | 説明                                                                                                      |
| :------------------------------: | :-----: | ------------------------------------------------------------------------------------------------------- |
|              `appId`             |  String | **必須：** [Keys & IDs](./keys-and-ids)にあるOneSignal App ID。                                                |
|   `requiresUserPrivacyConsent`   | Boolean | ユーザーがプライバシー同意を提供するまでSDKの初期化を遅延させます。セットアップを完了するには[`setConsentGiven()`](#setconsentgiven)を呼び出す必要があります。    |
|          `safari_web_id`         |  String | アップロードしたSafari `.p12`証明書のSafari Web ID。[Webクイックスタート](./web-push-setup)。                                 |
|          `promptOptions`         |  Object | 権限プロンプトをカスタマイズします。[詳細は以下](#promptoptions-parameters)。                                                   |
|          `notifyButton`          |  Object | サブスクリプションベルを有効にして構成します。[詳細は以下](#notifybutton-parameters)。                                               |
|       `welcomeNotification`      |  Object | ウェルカム通知をカスタマイズまたは無効にします。[詳細は以下](#welcomenotification-parameters)。                                       |
|       `persistNotification`      | Boolean | Chrome（デスクトップのみ） - `true`：クリックされるまで通知が持続、`false`：短時間後に消えます。Firefox/Safariはこの設定を無視します。                   |
|            `webhooks`            |  Object | イベントコールバックを構成します。[Webhooksを参照](./webhooks)。                                                             |
|         `autoResubscribe`        | Boolean | **推奨：** ブラウザーキャッシュをクリアしたユーザーまたはOneSignalに移行したユーザーを自動的に再サブスクライブします。コードで使用すると、ダッシュボード設定を上書きします。           |
|  `notificationClickHandlerMatch` |  String | `"exact"`（デフォルト）：正確なURL一致でタブにフォーカス。`"origin"`：同じドメインの任意のタブにフォーカス。                                       |
| `notificationClickHandlerAction` |  String | `"navigate"`（デフォルト）：`launchURL`に移動。`"focus"`：既存のタブにフォーカス（`"origin"`一致でのみ使用）。                            |
|       `serviceWorkerParam`       |  Object | サービスワーカーの`scope`を設定します。該当する場合、他のサービスワーカーのスコープとは異なる必要があります。例：<br />`{ scope: "/myPath/myCustomScope/" }` |
|        `serviceWorkerPath`       |  String | OneSignalサービスワーカーファイルの場所を設定します。例：<br />`"myPath/OneSignalSDKWorker.js"`                                 |

***

#### `promptOptions`パラメーター

`promptOptions`を使用して、ユーザー権限プロンプトをローカライズまたはカスタマイズします。すべてのフィールドはオプションです。

|    パラメーター    |        タイプ       | 説明                                                                                                                                                                                                                                                                     |
| :----------: | :--------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  `slidedown` |      Object      | 構成オプションを含む`prompts`の配列が含まれます。                                                                                                                                                                                                                                          |
|   `prompts`  | Array of Objects | プロンプト構成の配列。例：<br />`"slidedown": { "prompts": [{...}, {...}] }`                                                                                                                                                                                                        |
|    `type`    |      String      | プロンプトタイプ：<br /><ul><li>`push` – スライドプロンプト（カテゴリなし）</li><li>`category` – 最大10カテゴリのスライドプロンプト</li><li>`email` – Emailのみを収集</li><li>`sms` – 電話番号のみを収集</li><li>`smsAndEmail` – 両方を収集</li></ul>[Web権限プロンプト](./permission-requests)を参照。                                        |
| `autoPrompt` |      Boolean     | <ul><li>`true`：`delay`に基づいて表示。</li><li>`false`：Slidedown API経由で手動でのみプロンプトを表示。</li></ul>                                                                                                                                                                                |
|    `delay`   |      Object      | 自動プロンプトが表示されるタイミングを制御：<br />`{ pageViews: 3, timeDelay: 20 }` = 3回目のページビュー後と20秒待機後に表示。                                                                                                                                                                                 |
|    `text`    |      Object      | カスタムテキストオプション：<br /><ul><li>`actionMessage`（最大90文字）</li><li>`acceptButton`（最大15文字）</li><li>`cancelButton`（最大15文字）</li><li>`emailLabel`、`smsLabel`、`confirmMessage`</li><li>`updateMessage`、`positiveUpdateButton`、`negativeUpdateButton`（カテゴリまたは連絡先情報の更新に使用）</li></ul> |
| `categories` | Array of Objects | `type: category`の場合のみ。各オブジェクトには以下が含まれます：<br />`tag`：内部キー<br />`label`：ユーザーに表示される名前<br />例：`[ {tag: "local_news", label: "Local News"} ]`。[データタグ](./add-user-data-tags)を参照。                                                                                             |

***

#### `notifyButton`パラメーター

ページに表示されるサブスクリプションベル（通知ボタン）を構成します。

|       パラメーター       |    タイプ   | 説明                                                                |
| :----------------: | :------: | ----------------------------------------------------------------- |
|      `enable`      |  Boolean | サブスクリプションベルを有効にします。デフォルトでは無効です。                                   |
| `displayPredicate` | Function | ベルを表示/非表示するために`true`または`false`を返すカスタム関数（またはPromise）。表示時に一度評価されます。 |
|       `size`       |  String  | `'small'`、`'medium'`、または`'large'`。サブスクリプション後に`'small'`に縮小されます。    |
|     `position`     |  String  | `'bottom-left'`または`'bottom-right'`。                               |
|      `offset`      |  Object  | CSSピクセルオフセット：`{ bottom: '50px', left: '10px' }`                   |
|     `prenotify`    |  Boolean | `true`の場合、「1 unread」アイコンとカスタムホバーテキストを表示します。                       |
|    `showCredit`    |  Boolean | ポップアップで「Powered by OneSignal」を非表示にするには`false`に設定します。              |
|       `text`       |  Object  | ベルUIのカスタムテキスト。                                                    |

***

#### `welcomeNotification`パラメーター

初回サブスクリプション後に送信されるウェルカム通知をカスタマイズします。

|   パラメーター  |   タイプ   | 説明                                                         |
| :-------: | :-----: | ---------------------------------------------------------- |
| `disable` | Boolean | ウェルカム通知を無効にします。                                            |
| `message` |  String | **必須：** 通知メッセージ。空白の場合、デフォルトは`'Thanks for subscribing!'`です。 |
|  `title`  |  String | 通知のタイトル。デフォルトはサイトのタイトルです。削除するには`' '`（スペース）を使用します（推奨されません）。 |
|   `url`   |   URL   | ユーザーが通知をクリックしたときに開くオプションのURL。通常は不要です。                      |

***

**例：**

<CodeGroup>
  ```javascript Example init for Custom Code Setup theme={null}
  <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
  <script>
  window.OneSignalDeferred = window.OneSignalDeferred || [];
  OneSignalDeferred.push(async function(OneSignal) {
    await OneSignal.init({
      appId: "YOUR_APP_ID",
      safari_web_id: "YOUR_SAFARI_WEB_ID",
      notifyButton: {
        enable: true,
      },
      promptOptions: {
        slidedown: {
          prompts: [{
              type: "smsAndEmail",
              autoPrompt: false,
              text: {
                emailLabel: "Insert Email Address",
                smsLabel: "Insert Phone Number",
                acceptButton: "Submit",
                cancelButton: "No Thanks",
                actionMessage: "Receive the latest news, updates and offers as they happen.",
                updateMessage: "Update your push notification subscription preferences.",
                confirmMessage: "Thank You!",
                positiveUpdateButton: "Save Preferences",
                negativeUpdateButton: "Cancel",
              },
              delay: {
                pageViews: 1,
                timeDelay: 20
              },
            },
            {
              type: "category",
              autoPrompt: true,
              text: {
                actionMessage: "We'd like to show you notifications for the latest news and updates.",
                acceptButton: "Allow",
                cancelButton: "Cancel",

                /* CATEGORY SLIDEDOWN SPECIFIC TEXT */
                negativeUpdateButton: "Cancel",
                positiveUpdateButton: "Save Preferences",
                updateMessage: "Update your push notification subscription preferences.",
              },
              delay: {
                pageViews: 3,
                timeDelay: 20
              },
              categories: [{
                  tag: "politics",
                  label: "Politics"
                },
                {
                  tag: "local_news",
                  label: "Local News"
                },
                {
                  tag: "world_news",
                  label: "World News",
                },
                {
                  tag: "culture",
                  label: "Culture"
                },
              ]
            }
          ]
        }
      }
    });
  });
  </script>
  ```
</CodeGroup>

### `setLogLevel()`

コンソールに追加のログを出力するようにロギングを設定します。詳細については、[ブラウザーDevToolsでのデバッグ](./troubleshooting-web-push#debugging-using-browser-developer-tools)を参照してください。

```javascript JavaScript theme={null}
  OneSignal.Debug.setLogLevel('trace');
```

**ログレベル**：

* `'trace'`
* `'debug'`
* `'info'`
* `'warn'`
* `'error'`

***

## ユーザーIDとプロパティ

ユーザーがWebサイトでプッシュ通知にサブスクライブすると、OneSignalは自動的にOneSignal ID（ユーザーレベル）とサブスクリプションID（デバイスレベル）を作成します。一意のユーザー識別子を使用して`login()`を呼び出すことで、複数のサブスクリプション（例：デバイス、Email、電話番号）を単一のユーザーに関連付けることができます。

<Note>
  詳細については、[ユーザー](./users)と[エイリアス](./aliases)を参照してください。
</Note>

### `login(external_id)`

提供された`external_id`にユーザーコンテキストを設定します。この`external_id`に関連付けられたすべてのサブスクリプションとプロパティが単一の`onesignal_id`の下で統合されることを保証します。詳細については、[ユーザー](./users)を参照してください。

**主な動作：**

* `external_id`がすでに存在する場合、SDKはそのユーザーに切り替えます。ログイン前に収集された匿名データはマージされず、破棄されます。
* `external_id`が存在しない場合、ローカル状態は現在の`onesignal_id`の下に保存されます。ユーザーが匿名だった間に収集されたデータは保持されます。
* ネットワーク障害またはサーバーエラー時にSDKが自動的に再試行します。

<Note> [External ID](./users#external-id)が設定され、サブスクリプションがユーザーにリンクされていることを確認するために、ユーザーがサイトを開くたびに、または[サブスクリプション変更リスナー](#addeventlistener-push-subscription-changes)内でこのメソッドを呼び出します。 </Note>

<CodeGroup>
  ```javascript JavaScript theme={null}
  OneSignalDeferred.push(async function(OneSignal) {
     await OneSignal.login("external_id");
  });
  ```

  ```javascript Login with Subscription Change theme={null}
  //Example combining with push subscription change event
  function pushSubscriptionChangeListener(event) {
    if (event.current.token) {
      console.log(`The push subscription has received a token!`);
      //this is a good place to call OneSignal.login and pass in your user ID
      OneSignal.login("external_id");
    }
  }
  OneSignalDeferred.push(function(OneSignal) {
    OneSignal.User.PushSubscription.addEventListener("change", pushSubscriptionChangeListener);
  });
  ```
</CodeGroup>

### `logout()`

現在のユーザーをサブスクリプションからリンク解除します。

* 現在のプッシュサブスクリプションから`external_id`を削除します。
* OneSignal IDを新しい匿名ユーザーにリセットします。
* 新しいデータ（例：タグ、サブスクリプション、セッションデータなど）は、`login`メソッドで識別されるまで、新しい匿名ユーザーに設定されます。

<Note>サブスクリプションを新しい匿名ユーザーに設定したい場合、ユーザーがアプリからサインアウトするときにこれを使用します。 </Note>

```javascript JavaScript theme={null}
  OneSignalDeferred.push(async function(OneSignal) {
     await OneSignal.logout();
  });
```

### `OneSignal.User.onesignalId`

ブラウザーにローカルに保存されている現在のユーザーのOneSignal IDを取得します。ユーザー状態が初期化される前に呼び出された場合、`null`になる可能性があります。代わりに、[User State `addObserver()`](#addeventlistener-user-state)を使用してユーザー状態の変更をリッスンします。

```javascript JavaScript theme={null}
  OneSignal.User.onesignalId
```

### `OneSignal.User.externalId`

ブラウザーにローカルに保存されている現在のユーザーのExternal IDを取得します。`login`メソッドで設定されていない場合、またはユーザー状態が初期化される前に呼び出された場合、`null`になる可能性があります。代わりに、[User State `addObserver()`](#addeventlistener-user-state)を使用してユーザー状態の変更をリッスンします。

```javascript JavaScript theme={null}
  OneSignal.User.externalId
```

### `addEventListener()` *User State*

ユーザーコンテキストの変更（例：ログイン、ログアウト、ID割り当て）をリッスンします。

```javascript JavaScript theme={null}
  OneSignalDeferred.push(function() {
    OneSignal.User.addEventListener('change', function (event) {
      console.log('change', { event });
    });
  });
```

### `addAlias()`, `addAliases()`, `removeAlias()`, `removeAliases()`

エイリアスは代替識別子（ユーザー名やCRM IDなど）です。

* エイリアスを追加する前に、`login()`で`external_id`を設定します。`external_id`のないサブスクリプションに追加されたエイリアスは、複数のサブスクリプション間で同期されません。
* 詳細については、[エイリアス](./aliases)を参照してください。

```javascript JavaScript theme={null}
  // 単一のエイリアスを追加
  OneSignal.User.addAlias("ALIAS_LABEL", "ALIAS_ID");

  // 複数のエイリアスを追加
  OneSignal.User.addAliases({
    ALIAS_LABEL_01: "ALIAS_ID_01",
    ALIAS_LABEL_02: "ALIAS_ID_02",
    ALIAS_LABEL_03: "ALIAS_ID_03",
  });

  // 単一のエイリアスを削除
  OneSignal.User.removeAlias("ALIAS_LABEL");

  // 複数のエイリアスを削除
  OneSignal.User.removeAliases(["ALIAS_LABEL_01", "ALIAS_LABEL_02", "ALIAS_LABEL_03"]);
```

### `getLanguage()`, `setLanguage()`

ユーザーの自動検出された言語を取得または上書きします。使用可能な言語コードのリストについては、[多言語メッセージング](./multi-language-messaging)を参照してください。

```javascript JavaScript theme={null}
  // 現在ログインしているユーザーの言語を取得
  OneSignal.User.getLanguage()

  // 現在ログインしているユーザーの言語を設定
  OneSignal.User.setLanguage('en')
```

***

## カスタムイベント

[カスタムイベント](./custom-events)を介して[ジャーニーをトリガー](./journeys-settings#custom-events)し、[Wait Untilステップのアクティベーション](./journeys-actions#wait-until)を行います。

<Note>
  カスタムイベントにはWeb SDK `160500`+が必要です

  カスタムイベントを追跡するには、ユーザーがログインしている必要があります。
</Note>

現在のユーザーによって実行されたカスタムイベントを追跡して送信します。

* `name` - **必須。** 文字列としてのイベント名。
* `properties` - **オプション。** イベントに追加するキーと値のペア。プロパティディクショナリーまたはマップは、有効なJSONオブジェクトにシリアル化できる必要があります。ネストされた値をサポートします。

SDKは、予約キー`os_sdk`の下にアプリ固有のデータをプロパティペイロードに自動的に含め、消費できるようにします。たとえば、サブスクリプションタイプ別にイベントをターゲティングするには、`os_sdk.type`にアクセスします。

```json json theme={null}
{
  "os_sdk": {
    "device_os": "138",
    "type": "ChromePush",
    "device_model": "MacIntel",
    "sdk": "160500"
  }
}
```

### `trackEvent()`

```javascript JavaScript theme={null}
const properties = {
  "promo_code": "NEW50",
  "membership_details": {
     "vip": true,
     "products_viewed_count": 15,
  }
}
window.OneSignal.User.trackEvent('started_free_trial', properties);

// 追加のプロパティなしでイベント名だけでも追跡できます
window.OneSignal.User.trackEvent('my_event_name');
```

***

## データタグ

タグは、イベントまたはユーザープロパティに基づいてユーザーに設定する文字列データのカスタム`key : value`ペアです。詳細については、[データタグ](./add-user-data-tags)を参照してください。

### `addTag()`, `addTags()`

現在のユーザーに単一または複数のタグを設定します。

* キーがすでに存在する場合、値は置き換えられます。
* プランのタグ制限を超えると、操作は警告なしで失敗します。

```javascript JavaScript theme={null}
  // 単一のタグを追加
  OneSignal.User.addTag('tag_key', 'tag_value');

  // 複数のタグを追加
  OneSignal.User.addTags({
   KEY_01: "VALUE_01",
   KEY_02: "VALUE_02",
   KEY_03: "VALUE_03"
  });
```

### `removeTag()`, `removeTags()`

現在のユーザーから単一または複数のタグを削除します。

```javascript JavaScript theme={null}
  // 単一のタグを削除
  OneSignal.User.removeTag("KEY");

  OneSignal.User.removeTags(['KEY_01', 'KEY_02', 'KEY_03']);
```

### `getTags()`

ユーザーのタグのローカルコピーを返します。タグは、`login()`または新しいアプリセッション中にサーバーから更新されます。

```javascript JavaScript theme={null}
  const tags = OneSignal.User.getTags()
```

***

## プライバシー

### `setConsentRequired()`

データ収集が開始される前にユーザーの同意を強制します。**SDKを初期化する前に**呼び出す必要があります。

このメソッドは、`init`メソッドに`requiresUserPrivacyConsent: true`を追加するのと同じです。

```javascript JavaScript theme={null}
  OneSignal.setConsentRequired(true);
```

### `setConsentGiven()`

データ収集に対するユーザーの同意を付与または取り消します。同意がない場合、OneSignalにデータは送信されず、サブスクリプションも作成されません。

* [`setConsentRequired()`](#setconsentrequired)または`requiresUserPrivacyConsent`が`true`に設定されている場合、`setConsentGiven`が`true`で呼び出されるまで、SDKは完全には有効になりません。
* `setConsentGiven`が`true`に設定され、サブスクリプションが作成された後、後で`false`に設定された場合、そのサブスクリプションは更新を受信しなくなります。そのサブスクリプションの現在のデータは、`setConsentGiven`が再び`true`に設定されるまで変更されません。
* ユーザーやサブスクリプションデータを削除したい場合は、[Delete user](/reference/delete-user)または[Delete subscription](/reference/delete-subscription) APIを使用してください。

```javascript JavaScript theme={null}
  OneSignal.setConsentGiven(true);
```

***

## サブスクリプション

詳細については、[サブスクリプション](./subscriptions)を参照してください。

### `User.PushSubscription.id`

ブラウザーにローカルに保存されている現在のユーザーのプッシュサブスクリプションIDを取得します。早すぎるタイミングで呼び出された場合、`null`を返す可能性があります。変更に対応するために、[サブスクリプションオブザーバー](#addeventlistener-push-subscription-changes)内でこのデータを取得することをお勧めします。

```javascript JavaScript theme={null}
  OneSignal.User.PushSubscription.id;
```

### `User.PushSubscription.token`

現在のプッシュサブスクリプショントークンを返します。早すぎるタイミングで呼び出された場合、`null`を返す可能性があります。変更に対応するために、[サブスクリプションオブザーバー](#addeventlistener-push-subscription-changes)内でこのデータを取得することをお勧めします。

```javascript JavaScript theme={null}
  OneSignal.User.PushSubscription.token;
```

### `addEventListener()` *プッシュサブスクリプションの変更*

このメソッドを使用して、次のようなプッシュサブスクリプションの変更に対応します：

* デバイスがGoogle（FCM）またはApple（APNs）から新しいプッシュトークンを受信する
* OneSignalがサブスクリプションIDを割り当てる
* `optedIn`値が変更される（例：`optIn()`または`optOut()`を呼び出した）
* ユーザーがシステム設定でプッシュ権限を切り替え、その後アプリを開く

これが発生すると、SDKは`onPushSubscriptionChange`イベントをトリガーします。リスナーは`previous`と`current`の値を持つ状態オブジェクトを受け取るため、何が変更されたかを正確に検出できます。

更新のリッスンを停止するには、関連付けられた`removeObserver()`または`removeEventListener()`メソッドを呼び出します。

```javascript JavaScript theme={null}
  function pushSubscriptionChangeListener(event) {
    console.log("event.previous.id", event.previous.id);
    console.log("event.current.id", event.current.id);
    console.log("event.previous.token", event.previous.token);
    console.log("event.current.token", event.current.token);
    console.log("event.previous.optedIn", event.previous.optedIn);
    console.log("event.current.optedIn", event.current.optedIn);
  }

  OneSignalDeferred.push(function(OneSignal) {
    OneSignal.User.PushSubscription.addEventListener("change", pushSubscriptionChangeListener);
  });
```

### `optOut()`, `optIn()`, `optedIn`

現在のプッシュサブスクリプションのサブスクリプションステータス（`subscribed`または`unsubscribed`）を制御します。これらのメソッドを使用して、サイトのプッシュサブスクリプションステータスを制御します。一般的なユースケース：1）ログアウトしたユーザーへのプッシュ送信を防止する。2）サイト内に通知設定センターを実装する。

* `optOut()`：現在のプッシュサブスクリプションステータスをunsubscribedに設定します（ユーザーが有効なプッシュトークンを持っている場合でも）。
* `optIn()`：次の3つのアクションのいずれかを実行します：
  1. サブスクリプションに有効なプッシュトークンがある場合、現在のプッシュサブスクリプションステータスを`subscribed`に設定します。
  2. サブスクリプションに有効なプッシュトークンがない場合、プッシュ権限プロンプトの表示を試みます。
* `optedIn`：現在のプッシュサブスクリプションステータスがsubscribedの場合は`true`を返し、それ以外の場合は`false`を返します。プッシュトークンが有効だが`optOut()`が呼び出された場合、これは`false`を返します。

```javascript JavaScript theme={null}
  OneSignal.User.PushSubscription.optOut();

  OneSignal.User.PushSubscription.optIn();

  var optedIn = OneSignal.User.PushSubscription.optedIn;
```

### `addEmail()`, `removeEmail()`

現在のユーザーにEmailサブスクリプション（Emailアドレス）を追加または削除します。正しいユーザーコンテキストを設定するために、`login()`の後に`addEmail`を呼び出します。[Identity Verification](./identity-verification)と互換性があります。

```javascript JavaScript theme={null}
  OneSignal.User.addEmail("example@email.com");

  OneSignal.User.removeEmail("example@email.com");
```

### `addSms()`, `removeSms()`

現在のユーザーにSMSサブスクリプション（電話番号）を追加または削除します。[E.164形式](https://www.twilio.com/docs/glossary/what-e164)が必要です。正しいユーザーコンテキストを設定するために、`login()`の後に`addSms`を呼び出します。[Identity Verification](./identity-verification)と互換性があります。

```javascript JavaScript theme={null}
  OneSignal.User.addSms("+15558675309");

  OneSignal.User.removeSms("+15558675309");
```

***

## スライドダウンプロンプト

サイトにさまざまなスライドダウンプロンプトを表示します。詳細については、[Web権限プロンプト](./permission-requests)を参照してください。

* 却下された場合、今後の呼び出しは少なくとも3日間無視されます。さらに拒否すると、ユーザーに再度プロンプトを表示するまでに必要な時間が長くなります。
* バックオフ動作を上書きするには、メソッドに`{force: true}`を渡します。ただし、良好なユーザーエクスペリエンスを提供するために、アクションをボタンクリックなどのUI起動イベントにバインドします。

<Warning>
  これは、サブスクリプションに必要なネイティブブラウザープロンプトを置き換えるものではありません。ネイティブブラウザープロンプトを使用して権限を取得する必要があります。
</Warning>

### `promptPush()`

プッシュ通知の通常のスライドダウンプロンプトを表示します。

* カテゴリを使用している場合は、代わりに[`promptPushCategories()`](#promptpushcategories)を呼び出します。
* OneSignalによって設定されたバックオフロジックの対象となります。詳細については、[Web権限プロンプト](./permission-requests#auto-prompt-%26-display-settings)を参照してください。

```javascript JavaScript theme={null}
  OneSignal.Slidedown.promptPush();
  // テスト中にバックオフロジックをバイパスするには、{force: true}を渡します
  //OneSignal.Slidedown.promptPush({force: true});
```

### `promptPushCategories()`

カテゴリスライドダウンプロンプトを表示し、ユーザーがタグを更新できるようにします。ユーザーがまだ権限を付与していない場合は、ネイティブ通知権限プロンプトもトリガーします。

* カテゴリを使用していない場合は、代わりに[`promptPush()`](#promptpush)を呼び出します。
* OneSignalによって設定されたバックオフロジックの対象となります。詳細については、[Web権限プロンプト](./permission-requests#auto-prompt-%26-display-settings)を参照してください。

```javascript JavaScript theme={null}
  OneSignal.Slidedown.promptPushCategories();
  // テスト中にバックオフロジックをバイパスするには、{force: true}を渡します
  //OneSignal.Slidedown.promptPushCategories({force: true});
```

### `promptSms()`

SMSサブスクリプションプロンプトを表示します。

* OneSignalによって設定されたバックオフロジックの対象となります。詳細については、[Web権限プロンプト](./permission-requests#auto-prompt-%26-display-settings)を参照してください。

```javascript JavaScript theme={null}
  OneSignal.Slidedown.promptSms();
  // テスト中にバックオフロジックをバイパスするには、{force: true}を渡します
  //OneSignal.Slidedown.promptSms({force: true});
```

### `promptEmail()`

Emailサブスクリプションプロンプトを表示します。

* OneSignalによって設定されたバックオフロジックの対象となります。詳細については、[Web権限プロンプト](./permission-requests#auto-prompt-%26-display-settings)を参照してください。

```javascript JavaScript theme={null}
  OneSignal.Slidedown.promptEmail();
  // テスト中にバックオフロジックをバイパスするには、{force: true}を渡します
  //OneSignal.Slidedown.promptEmail({force: true});
```

### `promptSmsAndEmail()`

SMSとEmailサブスクリプションプロンプトを同時に表示します。

* OneSignalによって設定されたバックオフロジックの対象となります。詳細については、[Web権限プロンプト](./permission-requests#auto-prompt-%26-display-settings)を参照してください。

```javascript JavaScript theme={null}
  OneSignal.Slidedown.promptSmsAndEmail();
  // テスト中にバックオフロジックをバイパスするには、{force: true}を渡します
  //OneSignal.Slidedown.promptSmsAndEmail({force: true});
```

### `addEventListener()` *Slidedown*

スライドダウンプロンプト表示イベントを検出するためのコールバックを追加します。

```javascript JavaScript theme={null}
  OneSignalDeferred.push(function(OneSignal) {

    OneSignal.Slidedown.addEventListener('slidedownShown', function (event) {
      console.log('slidedownShown', { event });
    });

  });
```

***

## プッシュ通知

### `requestPermission()`

ネイティブブラウザープロンプトを介してプッシュ通知の権限を要求します。ブラウザーによって設定されたバックオフロジックの対象となります。詳細については、[Web権限プロンプト](./permission-requests#native-permission-prompt)を参照してください。

```javascript JavaScript theme={null}
  OneSignal.Notifications.requestPermission();
```

### `isPushSupported()`

現在のブラウザーがWebプッシュをサポートしている場合は`true`を返します。

```javascript JavaScript theme={null}
  const isSupported = OneSignal.Notifications.isPushSupported();
```

### `OneSignal.Notifications.permission`

サイトの現在の通知表示権限を示すブール値を返します。

* `true`：ユーザーが通知を表示する権限を付与しました。
* `false`：ユーザーが権限を拒否したか、まだ付与していません。

これはサイトの権限だけであり、OneSignalの`optOut`ステータスまたはサブスクリプションIDとプッシュトークンの存在は考慮されません。これらについては、`OneSignal.User.PushSubscription`を参照してください。

権限の変更をリッスンするには、[`permissionChange`](#permissionchange)イベントを使用します。

```javascript JavaScript theme={null}
  let permission = OneSignal.Notifications.permission;
```

### `addEventListener()` *notifications*

通知イベントにイベントハンドラーをアタッチすることで、通知のライフサイクルにフックできます。`addEventListener`を呼び出すと、通知イベントに任意の数のイベントハンドラーを追加できます。

イベントのリッスンを停止するには、関連付けられた`removeEventListener()`メソッドを呼び出します。

```javascript JavaScript theme={null}
  function eventListener(event) {
    console.log(`${event}`);
  }

  OneSignal.Notifications.addEventListener("event", eventListener);

  OneSignal.Notifications.removeEventListener("event", eventListener);
```

#### `permissionChange`

このイベントは、ユーザーがAllowまたはBlockをクリックするか、ブラウザーのネイティブ権限リクエストを却下したときに発生します。

```javascript JavaScript theme={null}
  function permissionChangeListener(permission) {
    if (permission) {
      console.log(`permission accepted!`);
    }
  }

  OneSignal.Notifications.addEventListener("permissionChange", permissionChangeListener);
```

#### `permissionPromptDisplay`

このイベントは、ブラウザーのネイティブ権限リクエストが表示されたときに発生します。

```javascript JavaScript theme={null}
  function promptListener() {
    console.log(`permission prompt dispslayed event: ${event}`);
  }

  OneSignal.Notifications.addEventListener("permissionPromptDisplay", promptListener);
```

#### `click`

このイベントは、通知の本文/タイトルまたはアクションボタンがクリックされたときに発生します。

```javascript JavaScript theme={null}
  function clickEventListener(event) {
    console.log(`click event: ${event}`);
  }

  OneSignal.Notifications.addEventListener("click", clickEventListener);
```

#### `foregroundWillDisplay`

このイベントは、通知が表示される前に発生します。このイベントはページで発生します。サイトで複数のブラウザータブが開いている場合、このイベントはOneSignalがアクティブな*すべて*のページで発生します。

```javascript JavaScript theme={null}
  function foregroundWillDisplayListener(event) {
    console.log(`notification will display: ${notification}`);
  }

  OneSignal.Notifications.addEventListener("foregroundWillDisplay", foregroundWillDisplayListener);
```

#### `dismiss`

このイベントは、次の場合に発生します：

* ユーザーが通知本文またはアクションボタンをクリックせずに意図的に通知を却下した
* Android上のChromeで、ユーザーがすべてのWebプッシュ通知を却下した（このイベントは、表示する各Webプッシュ通知に対して発生します）
* 通知が自動的に期限切れになり消える

<Info>
  このイベントは、ユーザーが通知本文またはアクションボタンの1つをクリックした場合は*発生しません*。それは通知`click`イベントと見なされます。
</Info>

```javascript JavaScript theme={null}
  function notificationDismissedListener(event) {
    console.log(`dismiss event: ${event}`);
  }

  OneSignal.Notifications.addEventListener("dismiss", notificationDismissedListener);
```

### `setDefaultUrl()`

通知のデフォルトURLを設定します。

デフォルトURLを設定していない場合、通知はデフォルトでサイトのルートに開きます。

```javascript JavaScript theme={null}
  OneSignal.Notifications.setDefaultUrl("https://onesignal.com");
```

通知のデフォルトURLを設定するには、通知がクリックされたときに起動したい有効なURLを指定します。このデフォルトURLは、通知を作成するときに他のURLが指定されていない場合に使用されます。通知を作成するときにURLを指定すると、デフォルトURLは上書きされます。

Safariの場合、デフォルトの通知アイコンURLは、Safari設定で指定したサイトURLに設定されます。この関数は使用できません。

### `setDefaultTitle()`

通知に表示するデフォルトのタイトルを設定します。

```javascript JavaScript theme={null}
  OneSignal.Notifications.setDefaultTitle("Powered by OneSignal!");
```

通知がタイトルで作成された場合、指定されたタイトルは常にこのデフォルトタイトルを上書きします。

通知のタイトルは、デフォルトでユーザーが最後に訪問したページのタイトルになります。ページタイトルがページ間で異なる場合、この不一致は望ましくない場合があります。通知タイトルが指定されていない限り、通知全体でページタイトルを標準化するためにこれを呼び出します。

***

## アウトカム

### `sendOutcome()`

OneSignalダッシュボードで表示できるアウトカムをトリガーします。アウトカム名（`string`、必須）と値（`number`、オプション）を受け入れます。同じアウトカム名で`sendOutcome`メソッドが呼び出されるたびに、アウトカムカウントが増加し、アウトカム値は渡された金額だけ増加します（含まれている場合）。詳細については、[カスタムアウトカム](./custom-outcomes)を参照してください。

```javascript JavaScript theme={null}
  OneSignal.Session.sendOutcome('outcome name', 19.84);
```

### `sendUniqueOutcome()`

OneSignalダッシュボードで表示できるアウトカムをトリガーします。アウトカム名（`string`、必須）のみを受け入れます。`sendUniqueOutcome`は、そのアウトカムのカウントをユーザーごとに1回だけ増加させます。詳細については、[カスタムアウトカム](./custom-outcomes)を参照してください。

```javascript JavaScript theme={null}
  OneSignal.Session.sendUniqueOutcome('outcome name');
```

***
