# ID同期

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

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

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

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

{% tabs %}
{% tab title="Kotlin" %}

```kotlin
PushSDK.UserProfile.externalId = "external-id"
```

{% endtab %}

{% tab title="Java" %}

```java
PushSDK.UserProfile.setExternalId("external-id");
```

{% endtab %}
{% endtabs %}

購読者にすでに External ID がタグ付けされているかどうかも確認できます:

{% tabs %}
{% tab title="Kotlin" %}

```kotlin
val currentExternalId = PushSDK.UserProfile.externalId
```

{% endtab %}

{% tab title="Java" %}

```java
String currentExternalId = PushSDK.UserProfile.getExternalId();
```

{% endtab %}
{% endtabs %}

### 外部IDの制限

購読者がExternal IDを介して誤ってマージされるのを防ぎ、購読者ドキュメントの整合性を確保するため、PushlyはExternal IDに対して以下の制限を適用します:

* 空文字列や、空白文字を含む文字列は不可
* プレースホルダーテキストを含む識別子は不可: `[test, testing, example, guest, anon, anonymous, user, guest, visitor, n/a]`
* 一般的なJavaScriptのフォールスルー語やキーワードは不可: \[`[Object ... ], undefined, NaN, Infinity, true, false]`
* 句読点/記号のみでは不可。英数字を含む必要があります: `[---, ***, -*-, -._+/=:@~]` &#x20;
* 識別子の長さは3〜256文字でなければなりません

A [正規表現プレイグラウンド](https://regex101.com/r/2wEVEc/1) External IDスキーマの有効性をテストするために設定されています。
