> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/nfc-wallet-sdk-ios/es/get-started/configuration/3.-initialization.md).

# 3. Inicialización

## la inicialización del SDK NFC Wallet <a href="#tsh-pay-sdk-initialisation" id="tsh-pay-sdk-initialisation"></a>

{% hint style="info" %}
**Nota**

NFC Wallet SDK no admite la función de restauración de copia de seguridad de iCloud y del dispositivo.
{% endhint %}

La aplicación de billetera digital (wallet) debe inicializar el SDK antes de que se puedan usar las funciones de NFC Wallet SDK.

Puede usar `TSHPay.configure` API para inicializar el SDK. La billetera debe proporcionar dos parámetros:

* Método de verificación del titular de la tarjeta (CVM)
* Archivo PLIST de configuración

La inicialización del SDK debe realizarse cada vez que se inicie la aplicación.

### Método de verificación del titular de la tarjeta <a href="#cardholder-verification-method" id="cardholder-verification-method"></a>

La billetera debe proporcionar el método de autenticación durante la inicialización del SDK. Se selecciona uno de los siguientes métodos de autenticación:

* `.userPresence` : Un método de autenticación que utiliza biometría (TouchID/FaceID) con alternativa al código del dispositivo, o el uso del código del dispositivo en los casos en que la biometría se elimine después del proceso de digitalización de la tarjeta. MPA puede cambiar el método de autenticación a biometría o al código del dispositivo durante el paso de verificación del pago.
* `biometricOnly` :Un método de autenticación que utiliza solo TouchID/FaceID.

Para más detalles sobre el método de verificación del titular de la tarjeta, consulte la documentación de la API.

### Configurar archivo PLIST <a href="#configuration-plist-file" id="configuration-plist-file"></a>

Se debe crear y almacenar un archivo PLIST en el bundle principal de la aplicación móvil.

**TSHPay.plist**

<details>

<summary>Descripción de los parámetros de TSHPay.plist</summary>

<table><thead><tr><th width="374">CLAVE</th><th>COMENTARIO</th></tr></thead><tbody><tr><td>REALM</td><td>[String] Un parámetro fijo. Por ejemplo, "CBP".</td></tr><tr><td>OAUTH_CONSUMER_KEY</td><td>[String] Clave de consumidor que debe proporcionar Thales.</td></tr><tr><td>GATEWAY_URL</td><td>[String] La URL de las Rages, que debe proporcionar Thales.</td></tr><tr><td>CSR_DOMAIN</td><td>[String] Se utiliza para la Solicitud de Firma de Certificado en el componente que protege las llamadas HTTPS. Consulte a su integrador de Thales para el valor que debe establecerse.</td></tr><tr><td>CSR_EMAIL</td><td>[String] Correo electrónico de la empresa.</td></tr><tr><td>CPS_URL</td><td>[String] La URL del servidor CPS que debe proporcionar su integrador de Thales.</td></tr><tr><td>MG_CONNECTION_URL</td><td>[String] La URL del servidor MG que debe proporcionar Thales.</td></tr><tr><td>MG_WALLET_PROVIDER_ID</td><td>[String] El ID del proveedor de la billetera.</td></tr><tr><td>MG_WALLET_APPLICATION_ID</td><td>[String] El ID de la aplicación del proveedor de la billetera, que es una entrada opcional del cliente. Esto es necesario cuando el proveedor de la billetera admite varias aplicaciones de billetera.</td></tr><tr><td>TRANSACTION_HISTORY_CONNECTION_URL</td><td>[String] La URL para recuperar el historial de transacciones que debe proporcionar Thales.</td></tr><tr><td>SECURE_LOG_LEVEL</td><td>[Number] Define el nivel de registros que se escribirán, donde <code>off = 0</code>, <code>fatal = 1</code>, <code>error = 2</code>, <code>warn = 3</code>, <code>info = 4</code>, y <code>debug = 5</code>.</td></tr><tr><td>DOMESTIC_CURRENCY_CODE</td><td>[Number] La configuración del código de moneda nacional se proporciona según el formato numérico estándar ISO-4217. Omita los '0' iniciales en el número del código de moneda. Si no se configura, el valor predeterminado es 978 (euro).</td></tr><tr><td>VISA_ONLINEPIN_PRIORITY</td><td>[Boolean] Configure la prioridad del PIN en línea de Visa. Si no se configura, el SDK procesará la transacción de Visa con prioridad CDCVM. Para más información, consulte <a href="/nfc-wallet-sdk-ios/es/additional-features/configure-visa-cvm-priority.md">Configurar la prioridad de CVM de Visa</a>.</td></tr></tbody></table>

</details>

Puede definir un nombre personalizado para el archivo PLIST de configuración, por ejemplo: "YourPlistName.plist". El nombre personalizado puede proporcionarse durante la inicialización del SDK.

De forma predeterminada, NFC Wallet SDK buscará `TSHPay.plist` en el bundle principal de la aplicación si la aplicación móvil no proporciona ninguno.

Los siguientes ejemplos muestran cómo inicializar el SDK usando el TSHPay.plist predeterminado

{% code lineNumbers="true" %}

```swift
Task {
    do {
        try await TSHPay.shared.configure(withVerificationMethod: .userPresence)
    } catch let error as TSHPaySDK.TSHPay.Error {
        switch error {
        case .storageUnrecoverableError:
            do {
                try await TSHPay.shared.reset()
                try await TSHPay.shared.configure(withVerificationMethod: .userPresence)
            } catch {
                // Manejar el error.
            }
            
        default: break
            // Manejar otros errores.
        }
    }
}
```

{% endcode %}

### Comprobar elegibilidad del dispositivo

Después de la inicialización del SDK, verifique la elegibilidad del dispositivo para comprobar:

* Método de autenticación del propietario del dispositivo usando `deviceEligibility`.
* Capacidad de pago sin contacto usando `contactlessPaymentEligibility`.

Si el dispositivo cumple los requisitos, el SDK devuelve `supported`.

{% code lineNumbers="true" %}

```swift
func checkDeviceEligibility() {
    Task {
        let eligibility = await TSHPay.shared.deviceEligibility
        switch eligibility.deviceOwnerAuthentication {
        case .supported:
            // El dispositivo es elegible. Puede iniciar la tokenización.
        case .passcodeNotSet:
            // Pida al usuario final que configure un código de acceso del dispositivo.
        case .biometricNotSet:
            // Pida al usuario final que registre la biometría (Touch ID / Face ID).
        }
    }
}
```

{% endcode %}

### Obtener el ID de la billetera <a href="#retrieving-the-wallet-id" id="retrieving-the-wallet-id"></a>

Usar `TSHPay.walletID` para recuperar el identificador del monedero.

El SDK genera el ID de la billetera la primera vez que llama a `TSHPay.configure`.

El ID de la billetera permanece estable entre reinicios de la aplicación.

Si restablece el SDK, el ID de la billetera se regenera.

Utilice el ID de la billetera para resolución de problemas y soporte.

{% code lineNumbers="true" %}

```swift
let walletIdentifier = TSHPay.walletID
print("ID de la billetera recuperado: \(walletIdentifier)")
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.payments.thalescloud.io/nfc-wallet-sdk-ios/es/get-started/configuration/3.-initialization.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
