# SDKメソッド

## オプトインプロンプトを手動でトリガーする

プラットフォーム経由でオプトインプロンプトの自動トリガーを無効にすることを選択できます。この場合、独自の条件（例: 訪問者が特定のリンクをクリックした後、特定のページを訪問した後など）に基づいてプロンプトをトリガーすることになります。

プロンプトのトリガーは、以下を呼び出すだけで簡単です。 `show_prompt` イベントは、訪問者が目的のアクションを実行したときに使います。

```javascript
pushly('show_prompt', { checkEligibility: true })
```

現在の購読状態や頻度制限に関係なくプロンプトを表示したい場合（つまり、ベルやカスタムプロンプトを手動で表示する場合）、次のコードに簡略化できます。

```javascript
pushly('show_prompt')
```

## 購読者のプロフィールに属性を追加する

購読者のプロフィールに属性を追加し、後でそれらの属性に基づいてセグメント分けを行うことができます。たとえば、特定の種類のニュース（例: 政治、スポーツ）に興味がある訪問者にタグを付け、それらを特定の通知の対象にしたい場合があります。

```javascript
pushly('profile', {
  'is_paying_subscriber': true,
  'interests': ['poltics', 'news']
});
```

{% hint style="info" %}
プロパティ値は、スカラー値またはスカラー値の配列にできます。
{% endhint %}

プロパティの値を配列として保存している場合は、 `profile_append` および `profile_remove` メソッドを使って値を追加または削除できます。

```javascript
// 購読者の興味に 'sports' を追加
pushly('profile_append', {
  'interests': ['sports']
});

// 購読者の興味から 'fashion' と 'news' を削除
pushly('profile_remove', {
  'interests': ['fashion', 'news']
});
```

{% hint style="warning" %}
以下を使うプロパティ `profile_append` では、提供された最新の20個の値のみが保存されます。
{% endhint %}

## ページのキーワード / タグを購読者のプロフィールに追加する

訪問した各ページについて、ページのキーワード / タグを購読者のプロフィールに追加できます。これらのタグは、その後セグメンテーションで使用して、訪問回数や最近の訪問状況に基づく購読者のコホートを作成できます。たとえば、「過去30日間に、"Astrology" とタグ付けされたページを少なくとも4回訪問した購読者」です。

```javascript
pushly('page_tag_visit', ['Tag1', 'Tag2', 'Tag3']);
```

## 購読者のユーザーIDを取得する

{% hint style="warning" %}
このメソッドは、SDK が完全に読み込まれた後にのみ使用できます。この SDK メソッドは、 `on_ready` [イベント](https://documentation.pushly.com/pushly-ja/integration/webpusshu/sdk/events).
{% endhint %}

以下のコードを実行して、ユーザーの Pushly ID を取得します。これは一時的な ID で、頻繁に変わる可能性があるため、長期的な訪問者識別には使用しないでください。

```javascript
pushly('on_ready', function() {
    PushlySDK.getUser().getId();
});
```

## 購読者の外部IDを設定する

購読者に一意のユーザーIDを提供すると、後で API を通じてその購読者とやり取りできるようになります。

外部IDを指定する方法は2つあります。

#### SDK 初期化時

できれば、SDK の初期化時に外部IDを指定してください。そのためには、 `load` 関数にコードを1行追加する必要があります。以下のスクリプト内の新しい `externalId` 行に注目してください:

```javascript
<script src="https://cdn.p-n.io/pushly-sdk.min.js?domain_key=DOMAIN_KEY" async></script>
<script>
  var PushlySDK = window.PushlySDK || [];
  function pushly() { PushlySDK.push(arguments) }
  pushly('load', {
    domainKey: 'DOMAIN_KEY',
    externalId: 'REPLACE_WITH_USER_ID'
  });
</script>
```

#### 別のメソッド呼び出しによって

または、SDK が読み込まれた後であればいつでも、次のコードを使って外部IDを指定できます。

```javascript
pushly('external_id', 'h7bwKwuE3');
```

購読者の外部IDが設定されたら、当社チームと連携して双方向の自動データ同期を構築できます。以下のユースケースは、パブリッシャーがサーバー間リクエストを通じて外部IDを使用する一般的な方法です。

* 個々の購読者にプログラムで通知を送信する
* 購読解除リクエストを処理する
* 購読者のプロフィール属性とイベントを追加および削除する

## 購読者の外部IDを削除する

外部IDを購読者から切り離したい場合は、次の JavaScript を実行してください:

```javascript
pushly('deregister_external_id');
```

## 訪問者がすでに購読済みかどうかを判定する

{% hint style="warning" %}
このメソッドは、SDK が完全に読み込まれた後にのみ使用できます。この SDK メソッドは、 `on_ready` [イベント](https://documentation.pushly.com/pushly-ja/integration/webpusshu/sdk/events).
{% endhint %}

訪問者がすでにプッシュ通知を購読しているかどうかを知る必要がある場合は、次の JavaScript を使用できます:

```javascript
pushly('on_ready', function() {
    await PushlySDK.isUserSubscribed();
});
```

この呼び出しの結果はブール値になります `true` または `false` で、訪問者の購読状態を表します。

{% hint style="info" %}
以下の [`on_ready`](https://documentation.pushly.com/pushly-ja/integration/webpusshu/events#example-on_ready) イベントを使用して、SDK が操作可能な状態であることを確認してください。
{% endhint %}

## 訪問者がプロンプト表示の対象かどうかを判定する

{% hint style="warning" %}
このメソッドは、SDK が完全に読み込まれた後にのみ使用できます。この SDK メソッドは、 `on_ready` [イベント](https://documentation.pushly.com/pushly-ja/integration/webpusshu/sdk/events).
{% endhint %}

訪問者がプッシュ許可のプロンプトを表示されるためのすべての要件を満たしているかどうかを判断する必要がある場合は、次の JavaScript を実行してください:

```javascript
pushly('on_ready', function() {
    await PushlySDK.isUserEligibleToPrompt();
});
```

この呼び出しの結果はブール値になります `true` または `false` 訪問者に権限ダイアログを表示できる対象かどうかを表します。

{% hint style="info" %}
以下の [`on_ready`](https://documentation.pushly.com/pushly-ja/integration/webpusshu/events#example-on_ready) イベントを使用して、SDK が操作可能な状態であることを確認してください。
{% endhint %}

## ユーザー通知の一時停止 / 再開（ソフト購読解除）

次のメソッドを呼び出すことで、ユーザーの通知を一時停止できます:

```javascript
pushly('pause_notifications')
```

ユーザーの通知を再開する場合は、次のメソッドを呼び出します:

```javascript
pushly('resume_notifications')
```

ユーザーの通知が現在一時停止されているかを確認するには:

```javascript
pushly('get_notifications_paused_state', (isPaused) => { ... })
```

## ユーザーを完全に削除する

ユーザーをすべての通知と追跡の対象から除外する必要がある場合は、次のメソッドを実行してください:

```javascript
pushly('request_user_deletion');
```

{% hint style="warning" %}
このメソッドはソフト購読解除としてのみ機能します。購読者が Cookie を削除すると、再び通知のオプトイン対象になる可能性があります。
{% endhint %}
