SDK de Unity - Establecer un ID de usuario y User Details hasheados

Establecer un ID de usuario y User Details hasheados

Envíe su ID de usuario interno a Singular para permitir el seguimiento entre dispositivos y la generación de informes de datos a nivel de usuario.

Nota: Si utiliza la solución Cross-Device de Singular, debe recopilar el ID de usuario en todas las plataformas.

Requisitos de ID de usuario

Privacidad y buenas prácticas

Siga estas directrices cuando implemente el seguimiento de ID de usuario para garantizar el cumplimiento de la privacidad y la medición adecuada entre dispositivos.

  • Sin PII: El ID de usuario no debe exponer información personal identificable (PII) como direcciones de correo electrónico, nombres de usuario o números de teléfono. Utilice un valor hash único para sus datos de origen.
  • Coherencia entre plataformas: El valor del ID de usuario debe ser el mismo identificador interno que capture en todas las plataformas (Web/Móvil/PC/Consola/Offline) para una medición precisa entre dispositivos.
  • Datos de primera parte: Singular incluye el ID de Usuario en las exportaciones a nivel de usuario, ETL y postbacks de BI Interno (si está configurado). El ID de usuario es un dato de origen y no se comparte con terceros.
  • Persistencia: El ID de usuario persiste hasta que se anula explícitamente mediante UnsetCustomUserId() o hasta que se desinstala la aplicación. Cerrar o reiniciar la aplicación no borra el ID de usuario.

Resumen de la implementación

Cuándo establecer el ID de usuario

Utilice SetCustomUserId() para establecer el identificador de usuario y UnsetCustomUserId() para borrarlo durante el cierre de sesión.

Práctica recomendada: Si varios usuarios comparten un mismo dispositivo, implementa un flujo de cierre de sesión que llame a SetCustomUserId() al iniciar sesión y a UnsetCustomUserId() al finalizarla.

Si ya conoce el identificador de usuario cuando se abre la aplicación, llame a SetCustomUserId() antes de inicializar Singular SDK. Esto asegura que Singular reciba el ID de usuario desde la primera sesión. Sin embargo, el ID de usuario no suele estar disponible hasta que el usuario se registra o inicia sesión, en cuyo caso llame a SetCustomUserId() una vez finalizado el flujo de registro o autenticación.


Métodos SDK

Establecer ID de usuario personalizado

Envíe su ID de usuario interno a Singular para el seguimiento entre dispositivos y la generación de informes a nivel de usuario.

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

Firma del método:

public static void SetCustomUserId(string customUserId)

Desactivar ID de usuario personalizado

Borre el ID de usuario cuando un usuario cierre la sesión para garantizar un seguimiento preciso de la sesión en dispositivos multiusuario.

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

Método Firma:

public static void UnsetCustomUserId()

User Details hasheados (correo electrónico y teléfono)

El ID de usuario anterior es su propio identificador opaco. Si además desea enviar la dirección de correo electrónico o el número de teléfono del usuario a Singular, use la API independiente SingularUserDetails. El SDK normaliza y aplica SHA-256 a estos valores en el dispositivo, por lo que la dirección de correo y el número de teléfono originales nunca se transmiten.

Disponibilidad: SDK de Unity versión 5.10.0 y superiores. Ambos métodos no hacen nada en el Editor de Unity; ejecútelos en un dispositivo o emulador.

Elegir un modo de hasheo

Hay dos formas de proporcionar los User Details. Elija una por usuario y manténgala de forma consistente.

  • Hasheo por el SDK (recomendado): Pase el correo electrónico o el número de teléfono en texto claro. El SDK normaliza el valor, le aplica hash y genera todas las variantes con las que Singular puede hacer coincidencias.
  • Pre-hasheado: Pase valores que usted ya normalizó y hasheó con SHA-256. El SDK los almacena exactamente como se los proporciona y no realiza ningún procesamiento adicional. Úselo cuando su app no pueda conservar valores en texto claro.

Importante: Si establece tanto un valor en texto claro como su variante pre-hasheada correspondiente, prevalece el valor pre-hasheado.

Setters de SingularUserDetails

Cada setter devuelve la misma instancia de SingularUserDetails, por lo que las llamadas se pueden encadenar. Pasar null, una cadena vacía o espacios en blanco elimina ese valor en lugar de almacenarlo.

Setter Detalles
SetEmail Modo: Hasheo por el SDK
Dirección de correo electrónico en texto claro. El SDK elimina los espacios y convierte el valor a minúsculas antes de aplicar el hash. Para las direcciones gmail.com y googlemail.com también genera una segunda variante sin el sufijo +tag y sin los puntos de la parte local.
Ejemplo: user@example.com
SetPhoneNumber Modo: Hasheo por el SDK
Número de teléfono en texto claro. El SDK genera dos variantes: una en formato E.164 que conserva el + inicial y elimina el resto de caracteres no numéricos, y otra solo de dígitos que también elimina el +. Incluya el código de país para que la variante E.164 sea utilizable.
Ejemplo: +15551234567
SetEmailSTD Modo: Pre-hasheado
Hash SHA-256 de la dirección de correo electrónico después de eliminar espacios y convertirla a minúsculas.
SetEmailNoDots Modo: Pre-hasheado
Hash SHA-256 de la dirección de correo electrónico después de eliminar espacios, convertirla a minúsculas y quitar el sufijo +tag y todos los puntos de la parte local. Se aplica a direcciones de tipo Gmail.
SetPhoneE164 Modo: Pre-hasheado
Hash SHA-256 del número de teléfono en formato E.164, conservando el + inicial.
SetPhoneDigits Modo: Pre-hasheado
Hash SHA-256 del número de teléfono con todos los caracteres no numéricos eliminados, incluido el + inicial.

Cada setter tiene su getter correspondiente — GetEmail, GetPhoneNumber, GetEmailSTD, GetEmailNoDots, GetPhoneE164 y GetPhoneDigits — además de IsEmpty, que indica si se ha establecido algún valor.


Establecer los User Details antes de la inicialización

Unity no tiene una API de configuración aparte para los User Details. Llame a SetUserDetails antes de que el SDK se inicialice y los valores se conservan y se envían con la primera sesión, de modo que quedan adjuntos desde la primera solicitud.

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

SingularSDK.SetUserDetails(userDetails);

Establecer los User Details después de la inicialización

Si el correo electrónico o el número de teléfono solo se conocen después del inicio de sesión o del registro, llame a SetUserDetails en ese momento. A partir de entonces, los valores se adjuntan a todas las sesiones y eventos que envía el 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);

Firma del método:

public static void SetUserDetails(SingularUserDetails details)

Borrar los User Details

Los User Details almacenados persisten en el dispositivo entre inicios de la app y se eliminan al desinstalarla. Llame a ClearUserDetails al cerrar sesión, o cuando el usuario retire su consentimiento, para eliminarlos.

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

Firma del método:

public static void ClearUserDetails()

Nota: Llamar a SetUserDetails en un inicio posterior no borra lo que se almacenó antes. Pasar SetUserDetails(null), o un SingularUserDetails sin ningún valor establecido, también borra los datos almacenados en lugar de dejarlos intactos.


Validación y comportamiento de privacidad

  • Dónde ocurre la validación: La capa de Unity almacena lo que usted le pasa y lo reenvía al SDK nativo, que valida los valores. Los valores rechazados son registrados por el SDK nativo y no se envían.
  • Validación del correo electrónico: Un correo electrónico en texto claro debe contener exactamente una @ y un punto después de ella. Los valores no válidos se rechazan y se registran, y no se envían.
  • Validación del teléfono: Un número de teléfono en texto claro debe contener al menos 6 dígitos. Los valores más cortos se rechazan y se registran.
  • Protección contra el modo incorrecto: Un valor que ya parece hasheado es rechazado por SetEmail y SetPhoneNumber. De la misma forma, los setters pre-hasheados rechazan cualquier valor que no sea una cadena hexadecimal SHA-256 de 64 caracteres.
  • Limit Data Sharing: Mientras Limit Data Sharing está activado, el payload de User Details se excluye de todas las solicitudes. Consulte Privacidad de datos.
  • Consentimiento: Recopile y envíe direcciones de correo electrónico y números de teléfono solo cuando tenga una base legal para hacerlo. El hasheo no lo exime de sus obligaciones bajo GDPR, CCPA o normativas equivalentes.