> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Añadir campos adicionales al registro con Lock.Android

# Lock.Android: Campos personalizados en el registro

**Lock.Android** le permite especificar campos adicionales que el usuario debe completar antes de crear una nueva cuenta. Los campos adicionales se mostrarán en una segunda pantalla después de que el usuario complete los campos básicos (correo electrónico, username, contraseña).

<div id="create-the-custom-fields">
  ## Crear los campos personalizados
</div>

Cree un nuevo objeto `CustomField` indicando estos 4 parámetros obligatorios.

1. Icono: El `int` que apunta al recurso que desea usar como icono (que sea pequeño).
2. Tipo: El `FieldType` que se usará en este campo. El tipo define la distribución del teclado y, en ocasiones, la validación de la entrada.
3. Clave: El `String` que identifica este valor en el JSON resultante. ¡No debe repetirse! Si se repiten claves de campo, el segundo campo se eliminará de la lista.
4. Sugerencia: El `@StringRes` del texto que se mostrará como sugerencia en el campo.

Además, puede especificar en qué parte del perfil del usuario se almacenará el campo. Consulte la sección [Almacenamiento](#storage) a continuación para obtener más detalles.

También puede crear campos que no se mostrarán al usuario, pero que pueden usarse para incluir metadatos adicionales de forma dinámica después del registro.

```kotlin lines theme={null}
// Campo regular
val nameField = CustomField(R.drawable.ic_name, FieldType.TYPE_NAME, "first_name", R.string.hint_first_name, CustomField.Storage.PROFILE_ROOT)

// Campo oculto
val androidField = HiddenField("android_version", Build.VERSION.SDK_INT.toString(), Storage.USER_METADATA)

val customFields = listOf(nameField, androidField)
```

Repite los pasos anteriores tantas veces como campos necesites.

<div id="use-the-custom-fields">
  ## Usa los campos personalizados
</div>

Pasa la lista de campos personalizados a la instancia de Lock al crearla con el método `withSignUpFields()`.

```kotlin lines theme={null}
val lock = Lock.newBuilder(auth0, callback)
              .withSignUpFields(customFields)
              //...
              .build(this)
```

Si ha habilitado el registro en el Dashboard de la aplicación, se pedirá a los usuarios que completen los campos restantes después de completar los campos básicos (correo electrónico/username, contraseña) y hacer clic en **Enviar**. El usuario debe completar todos los campos personalizados antes de poder finalizar el registro.

Durante el registro, los campos adicionales se añaden al atributo `user_metadata` o se establecen directamente en el perfil raíz del usuario, según la opción de Storage elegida. Puede acceder a estas propiedades consultando el perfil del usuario en cualquier momento, incluso desde el Dashboard, en la sección del usuario.

<div id="field-types">
  ## Tipos de campo
</div>

Cada campo personalizado solo puede tener un `FieldType` asociado.

* TYPE\_NAME
* TYPE\_NUMBER
* TYPE\_PHONE\_NUMBER
* TYPE\_EMAIL

<div id="storage">
  ## Almacenamiento
</div>

Cada campo personalizado solo puede tener un `Storage` asociado. Puede elegir almacenarlo en el nivel raíz, en un atributo raíz del perfil, o dentro del atributo `user_metadata`. Para especificar la ubicación de almacenamiento, use el constructor de cinco parámetros y pase el parámetro `Storage` que prefiera. De forma predeterminada, los campos se almacenan dentro del atributo `user_metadata`.

Opciones disponibles:

* PROFILE\_ROOT
* USER\_METADATA (predeterminado)

Para que los campos se guarden en el nivel raíz del perfil del usuario, sus claves deben coincidir con las que se indican en la [documentación del endpoint](https://auth0.com/docs/api/authentication#signup).
