ユーザー IDを設定する
Braze SDKでユーザー IDを設定する方法について説明します。これは、デバイスやプラットフォームを超えてユーザーを追跡し、ユーザーデータAPIを通じてユーザーデータをインポートし、メッセージングAPIを通じてターゲットメッセージを送信するための一意の識別子です。ユーザーに固有のIDを割り当てない場合、Brazeは代わりに匿名IDを割り当てますが、割り当てるまでこれらの機能を使用することはできません。

リストされていないラッパーSDKの場合は、代わりに関連するネイティブAndroidまたはSwiftメソッドを使用してください。
匿名ユーザーについて
Braze SDKを統合した後、アプリを初めて起動したユーザーは、changeUser メソッドを呼び出して external_id を割り当てるまで「匿名」とみなされます。一度割り当てると、再び匿名にすることはできません。ただし、アプリをアンインストールして再インストールした場合は、changeUser が呼び出されるまで再び匿名になります。
以前に識別されたユーザーが新しいデバイスでセッションを開始した場合、そのデバイスでそのユーザーの external_id を使用して changeUser を呼び出すと、Brazeは匿名プロファイルの特定のフィールドのうち、識別済みプロファイルにまだ存在しないものをマージします。すべてのデータが転送されるわけではなく、識別済みプロファイルにまだ設定されていないフィールドのみがマージされます。転送されるフィールドの完全なリストについては、マージの動作を参照してください。
匿名ユーザートラッキングの防止
ユーザーが識別されるまでデータを収集しないというユースケースの場合、ユーザーがログインしてexternal_idが利用可能になるまで、Braze SDKの初期化を遅延させることができます。コード内にフラグを設定し、ユーザーがサインインしたときにtrueに切り替え、そのフラグが設定されている場合にのみSDKを初期化します。

初期化の遅延は、ユーザーがアプリを初めてダウンロードしたとき(external_idが設定される前)にのみ行ってください。ユーザーがサインアウトしたり新しいセッションを開始したりするたびにSDKの初期化を妨げると、アプリ内メッセージやContent Cardsアセットのプリフェッチに干渉し、それらのキャンペーンで配信到達性エラーが発生する可能性があります。
ユーザー IDを設定する
ユーザー IDを設定するには、ユーザーが最初にログインした後にchangeUser()メソッドを呼び出します。IDは一意であり、命名のベストプラクティスに従う必要があります。
一意の識別子をハッシュ化する場合は、ハッシュ関数への入力を正規化していることを確認してください。例えば、メールアドレスをハッシュ化する場合は、先頭と末尾の空白を取り除き、ローカライゼーションを考慮してください。
標準的なWeb SDKの実装では、次のメソッドを使用できます。
braze.changeUser(YOUR_USER_ID_STRING);
代わりにGoogle Tag Managerを使用したい場合は、Change Userタグタイプを使用してchangeUserメソッドを呼び出すことができます。ユーザーがログインしたとき、またはその他の方法で一意のexternal_id識別子で識別されたときに使用します。
現在のユーザーの一意のIDをExternal User IDフィールドに入力してください。通常、これはWebサイトから送信されるデータレイヤー変数を使用して入力されます。

Braze.getInstance(context).changeUser(YOUR_USER_ID_STRING);
Braze.getInstance(context).changeUser(YOUR_USER_ID_STRING)
AppDelegate.braze?.changeUser(userId: "YOUR_USER_ID")
[AppDelegate.braze changeUser:@"YOUR_USER_ID_STRING"];

changeUserはユーザー切り替えをキューに入れ、呼び出しスレッドで即座に返します。その後braze.userに対して呼び出された属性セッターは、changeUserによって開始された操作の後に自動的にシリアライズされます。braze.user.idを読み取ると、ユーザー切り替えが完全に完了するまで呼び出しスレッドがブロックされます。メインスレッドやレイテンシに敏感なコンテキストでは、代わりにノンブロッキングの代替手段を使用してください。
// Completion handler — always delivers on the main thread.
AppDelegate.braze?.user.getId { userId in
print("User ID:", userId ?? "anonymous")
}
// Async/await (iOS 13.0+, tvOS 13.0+, watchOS 6.0+, macOS 10.15+)
let userId = await AppDelegate.braze?.user.getId()
// Completion handler — always delivers on the main thread.
[AppDelegate.braze.user getIdWithCompletion:^(NSString * _Nullable userId) {
NSLog(@"User ID: %@", userId ?: @"anonymous");
}];
BrazePlugin.changeUser("YOUR_USER_ID");
m.Braze.setUserId(YOUR_USER_ID_STRING)
AppboyBinding.ChangeUser("YOUR_USER_ID_STRING");
Braze.changeUser("YOUR_USER_ID_STRING");
changeUser()の仕組み
changeUser()を呼び出すと、次の動作が適用されます。
- すでに設定されている同じユーザー IDで
changeUser()を呼び出しても、セッション数には影響しません。 - 異なるユーザー IDで
changeUser()を呼び出すと、現在のセッションが自動的に終了し、新しいセッションが開始されます。 - 匿名ユーザーが新しいユーザー ID(Brazeにまだ存在しないもの)で
changeUser()を呼び出すと、匿名プロファイルのデータが新しい識別済みプロファイルに統合されます。 - 匿名ユーザーが既存のユーザー IDで
changeUser()を呼び出すと、匿名プロファイルのデータは識別済みプロファイルに統合されません。

changeUser()を呼び出すと、現在のユーザーのセッション終了の一環としてデータフラッシュがトリガーされます。SDKは新しいユーザーに切り替える前に、前のユーザーの保留中のデータを自動的にフラッシュするため、changeUser()を呼び出す前に手動でデータフラッシュをリクエストする必要はありません。

単一の共有ユーザー ID(例えば、静的なデフォルトexternal ID)を割り当てたり、ユーザーがログアウトするときにchangeUser()を呼び出したりしないでください。これを行うと、共有デバイスで以前にログインしたユーザーを再エンゲージメントできなくなり、すべてのデータが単一のユーザー IDに記録されるため、他の機能が期待どおりに動作しなくなる可能性があります。代わりに、すべてのユーザー IDを個別に追跡し、アプリのログアウトプロセスで以前にログインしたユーザーに戻すことができるようにしてください。新しいセッションが開始されると、Brazeは新しくアクティブになったプロファイルのデータを自動的に更新します。
ログアウト後のプッシュ通知の管理
ユーザーがアプリからログアウトする際、ログアウトフローの一部としてBraze SDKのlogout()またはunregisterPush()メソッドを呼び出してください。いずれかの呼び出しが成功すると、Brazeは即座にデバイスのプッシュトークンを現在のユーザープロファイルから削除し、そのデバイスを今後のプッシュキャンペーンのターゲットから除外します。
- 完全なログアウトの場合は、
logout()を呼び出してプッシュの登録を解除し、成功時にローカルSDKデータを消去してSDKを無効にします。logout()が成功すると、wipeData()は自動的に呼び出されます。 - プッシュのみを停止する場合は、
unregisterPush()を呼び出して、ユーザープロファイルからプッシュトークンを削除し、ローカルに保存されたトークンをクリアします。他のSDKデータは消去されません。
実装の詳細、エラーハンドリング、再登録の手順については、お使いのプラットフォームのデータ収集の管理を参照してください。

logout()またはunregisterPush()が成功した時点でプッシュ通知がすでに送信中の場合、その通知はデバイスに配信される可能性があります。
ユーザーエイリアス
仕組み
匿名ユーザーにはexternal_idsがありませんが、代わりにユーザーエイリアスを割り当てることができます。ユーザーエイリアスは、ユーザーに他の識別子を追加したいが、そのユーザーのexternal_idがわからない場合(たとえば、ログインしていない場合)に割り当てます。ユーザーエイリアスを使用すると、以下のことも可能です。
- Braze APIを使用して、匿名ユーザーに関連するイベントと属性を記録する
- 外部ユーザーIDが空白のセグメンテーションフィルターを使用して、メッセージングで匿名ユーザーをターゲットにする
ユーザーエイリアスの設定
ユーザーエイリアスは、名前とラベルの2つの部分で構成されます。名前は識別子そのものを指し、ラベルはその識別子が属する種類を指します。たとえば、サードパーティのカスタマーサポートプラットフォームにexternal IDが987654のユーザーがいる場合、Brazeで名前を987654、ラベルをsupport_idとしてエイリアスを割り当てることで、プラットフォーム間でそのユーザーを追跡できます。
braze.getUser().addAlias(ALIAS_NAME, ALIAS_LABEL);
Braze.getInstance(context).getCurrentUser().addAlias(ALIAS_NAME, ALIAS_LABEL);
Braze.getInstance(context).currentUser?.addAlias(ALIAS_NAME, ALIAS_LABEL)
Appboy.sharedInstance()?.user.addAlias(ALIAS_NAME, ALIAS_LABEL)
[[Appboy sharedInstance].user addAlias:ALIAS_NAME withLabel:ALIAS_LABEL];
{
"alias_name" : (required, string),
"alias_label" : (required, string)
}
Braze.addAlias("ALIAS_NAME", "ALIAS_LABEL");
ID命名のベストプラクティス
ユーザー IDは、Universally Unique Identifier (UUID) 標準を使用して作成することをおすすめします。UUIDは、ランダムで適切に分散された128ビットの文字列です。
あるいは、既存の一意識別子(名前やメールアドレスなど)をハッシュ化してユーザー IDを生成することもできます。その場合は、必ずSDK認証を実装し、ユーザーのなりすましを防いでください。

ユーザー IDには推測されやすい値や連番を使用しないでください。これにより、組織が悪意のある攻撃やデータ漏洩にさらされる可能性があります。
セキュリティを強化するには、SDK認証を使用してください。
最初からユーザー IDに正しい名前をつけることが重要ですが、将来的にはいつでも/users/external_ids/renameエンドポイントを使って変更できます。
| 推奨されないIDの種類 | 推奨されない例 |
|---|---|
| ユーザーが閲覧可能なプロファイルIDまたはユーザー名 | JonDoe829525552 |
| メールアドレス | [email protected] |
| 自動増分するユーザー ID | 123 |

ユーザー IDの作成方法に関する詳細を共有することは避けてください。これにより、組織が悪意のある攻撃やデータ漏洩にさらされる可能性があります。