Unity SDK - ユーザーIDとハッシュ化 User Details の設定

ユーザーIDとハッシュ化 User Details の設定

社内ユーザーIDをSingularに送信して、クロスデバイス追跡とユーザーレベルデータレポートを有効にします。

注: Singularのクロスデバイスソリューションをご利用の場合は、すべてのプラットフォームでユーザーIDを収集する必要があります。

ユーザーIDの要件

プライバシーとベストプラクティス

プライバシーコンプライアンスと適切なクロスデバイス測定を保証するため、ユーザーIDトラッキングを実施する際は以下のガイドラインに従ってください。

  • PIIを使用しない:ユーザIDは、メールアドレス、ユーザ名、電話番号などの個人を特定できる情報(PII)を公開するべきではありません。ファーストパーティデータに固有のハッシュ化された値を使用してください。
  • プラットフォーム間の一貫性:ユーザーIDの値は、正確なクロスデバイス測定のために、すべてのプラットフォーム(ウェブ/モバイル/PC/コンソール/オフライン)で同じ内部識別子でなければなりません。
  • ファーストパーティデータ:Singularは、ユーザーレベルのエクスポート、ETL、内部BIポストバック(設定されている場合)にユーザーIDを含めます。ユーザーIDはファーストパーティデータであり、第三者と共有されることはありません。
  • 永続性:ユーザー ID は、UnsetCustomUserId() を使用して明示的に設定が解除されるか、アプリがアンインストールされるまで保持されます。アプリを終了または再起動しても、ユーザIDはクリアされません。

実装の概要

ユーザIDを設定するタイミング

ユーザーIDを設定するにはSetCustomUserId() 、ログアウト時にクリアするにはUnsetCustomUserId()

ベストプラクティス複数のユーザーが1つのデバイスを共有する場合は、ログイン時にSetCustomUserId() を呼び出し、ログアウト時にUnsetCustomUserId() を呼び出すログアウトフローを実装します。

アプリを開いたときにすでにユーザーIDがわかっている場合は、Singular SDKを初期化する前にSetCustomUserId() 。これにより、Singularは最初のセッションからユーザーIDを確実に受け取ります。ただし、通常、ユーザーが登録またはログインするまでユーザーIDは利用できません。その場合は、登録または認証フローが完了した後にSetCustomUserId()


SDKメソッド

カスタムユーザーIDの設定

クロスデバイスのトラッキングとユーザーレベルのレポートのために、内部ユーザーIDをSingularに送信します。

C#
// Set the user ID after login or registration
SingularSDK.SetCustomUserId("custom_user_id");

メソッドの署名

public static void SetCustomUserId(string customUserId)

カスタムユーザーIDの解除

ユーザーがログアウトした際にユーザーIDをクリアし、マルチユーザーデバイスの正確なセッショントラッキングを保証します。

C#
// Unset the user ID on logout
SingularSDK.UnsetCustomUserId();

方法署名

public static void UnsetCustomUserId()

ハッシュ化 User Details(メールアドレスと電話番号)

上記のユーザーIDはお客様独自の不透明な識別子です。ユーザーのメールアドレスや電話番号も Singular に送信する場合は、別の SingularUserDetails API を使用してください。SDKがデバイス上でこれらの値を正規化しSHA-256でハッシュ化するため、生のメールアドレスと電話番号が送信されることはありません。

対応バージョン: Unity SDK 5.10.0 以降。どちらのメソッドも Unity エディターでは何も行いません。デバイスまたはエミュレーターで動作をご確認ください。

ハッシュ化モードの選択

User Details を渡す方法は2つあります。ユーザーごとにどちらかを選び、一貫して使用してください。

  • SDKハッシュ化(推奨): 平文のメールアドレスまたは電話番号を渡します。SDKが値を正規化してハッシュ化し、Singularがマッチングに使用できるすべてのバリアントを生成します。
  • 事前ハッシュ化: ご自身で正規化してSHA-256でハッシュ化した値を渡します。SDKは渡された値をそのまま保存し、それ以上の処理は行いません。アプリが平文の値を保持できない場合に使用してください。

重要: 平文の値と対応する事前ハッシュ化バリアントの両方を設定した場合、事前ハッシュ化された値が優先されます。

SingularUserDetails のセッター

各セッターは同じ SingularUserDetails インスタンスを返すため、チェーンして呼び出せます。null、空文字列、または空白を渡すと、その値は保存されず削除されます。

セッター 詳細
SetEmail モード: SDKハッシュ化
平文のメールアドレスです。SDKはハッシュ化の前に空白を削除して小文字に変換します。gmail.com および googlemail.com のアドレスについては、ローカル部分から +tag サフィックスとすべてのドットを削除した2番目のバリアントも生成します。
例: user@example.com
SetPhoneNumber モード: SDKハッシュ化
平文の電話番号です。SDKは2つのバリアントを生成します。先頭の + を保持し他の非数字を除去したE.164形式と、+ も除去した数字のみの形式です。E.164バリアントが利用できるよう国番号を含めてください。
例: +15551234567
SetEmailSTD モード: 事前ハッシュ化
空白を削除し小文字に変換した後のメールアドレスのSHA-256ハッシュです。
SetEmailNoDots モード: 事前ハッシュ化
空白の削除、小文字への変換、さらにローカル部分から +tag サフィックスとすべてのドットを削除した後のメールアドレスのSHA-256ハッシュです。Gmail形式のアドレスに適用されます。
SetPhoneE164 モード: 事前ハッシュ化
先頭の + を保持したE.164形式の電話番号のSHA-256ハッシュです。
SetPhoneDigits モード: 事前ハッシュ化
先頭の + を含むすべての非数字を削除した電話番号のSHA-256ハッシュです。

各セッターには対応するゲッターがあります — GetEmailGetPhoneNumberGetEmailSTDGetEmailNoDotsGetPhoneE164GetPhoneDigits — さらに、値が1つでも設定されているかを返す IsEmpty もあります。


初期化前に User Details を設定する

Unity には User Details 用の設定時APIはありません。SDKの初期化前に SetUserDetails を呼び出すと、値が保持され最初のセッションとともに送信されるため、最初のリクエストから値が付加されます。

C#
// Called before the Singular SDK initializes
SingularUserDetails userDetails = new SingularUserDetails()
    .SetEmail("user@example.com")
    .SetPhoneNumber("+15551234567");

SingularSDK.SetUserDetails(userDetails);

初期化後に User Details を設定する

メールアドレスや電話番号がログインまたは登録後にしか分からない場合は、その時点で SetUserDetails を呼び出してください。以降、SDKが送信するすべてのセッションとイベントに値が付加されます。

C#
// Cleartext values, hashed by the SDK
SingularUserDetails userDetails = new SingularUserDetails()
    .SetEmail("user@example.com")
    .SetPhoneNumber("+15551234567");

SingularSDK.SetUserDetails(userDetails);

// Or supply your own SHA-256 hashes
SingularUserDetails hashed = new SingularUserDetails()
    .SetEmailSTD("b4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514")
    .SetPhoneE164("8a59780bb8cd2ba022bfa5ba2ea3b6e07af17a7d8b30c1f9b3390e36f69019e4");

SingularSDK.SetUserDetails(hashed);

メソッドの署名:

public static void SetUserDetails(SingularUserDetails details)

User Details をクリアする

保存された User Details はアプリの起動をまたいでデバイスに保持され、アプリをアンインストールすると削除されます。ログアウト時、またはユーザーが同意を撤回した際に ClearUserDetails を呼び出して削除してください。

C#
// Remove stored user details on logout
SingularSDK.ClearUserDetails();

メソッドの署名:

public static void ClearUserDetails()

注意: 後の起動で SetUserDetails を呼び出しても、以前に保存された値は消去されません。SetUserDetails(null)、または値が1つも設定されていない SingularUserDetails を渡した場合も、保存された値はそのまま残らず削除されます。


検証とプライバシー動作

  • 検証が行われる場所: Unityレイヤーは渡された値をそのまま保存してネイティブSDKに転送し、値の検証はネイティブSDKが行います。拒否された値はネイティブSDKがログに記録し、送信されません。
  • メールアドレスの検証: 平文のメールアドレスには @ が正確に1つ含まれ、その後にドットが必要です。無効な値は拒否されログに記録され、送信されません。
  • 電話番号の検証: 平文の電話番号には少なくとも6桁の数字が必要です。それより短い値は拒否されログに記録されます。
  • モード誤用の防止: すでにハッシュ化されているように見える値は SetEmailSetPhoneNumber で拒否されます。同様に、事前ハッシュ化用のセッターは64文字のSHA-256の16進文字列以外を拒否します。
  • Limit Data Sharing: Limit Data Sharing が有効な間は、User Details ペイロードがすべてのリクエストから除外されます。参照: データプライバシー.
  • 同意: 法的根拠がある場合にのみ、メールアドレスと電話番号を収集して送信してください。ハッシュ化はGDPR、CCPA、または同等の規制に基づく義務を免除するものではありません。