> 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

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

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

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

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

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

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

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

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

La wallet 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 usa biometría (TouchID/FaceID) con retroceso al código de acceso del dispositivo, o usar el código de acceso del dispositivo en 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 de acceso del dispositivo durante el paso de verificación de pago.
* `biometricOnly` :Un método de autenticación que usa 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>

Debe crearse un archivo PLIST y almacenarse 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 ser proporcionada por Thales.</td></tr><tr><td>GATEWAY_URL</td><td>[String] La URL de las Rages que debe ser proporcionada por Thales.</td></tr><tr><td>CSR_DOMAIN</td><td>[String] Se usa para la solicitud de firma de certificado en el componente que asegura las llamadas HTTPS. Consulte con su integrador de Thales para el valor que se debe establecer.</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 ser proporcionada por su integrador de Thales.</td></tr><tr><td>MG_CONNECTION_URL</td><td>[String] La URL del servidor MG que debe ser proporcionada por Thales.</td></tr><tr><td>MG_WALLET_PROVIDER_ID</td><td>[String] El ID del proveedor de la wallet.</td></tr><tr><td>MG_WALLET_APPLICATION_ID</td><td>[String] El ID de la aplicación del proveedor de la wallet, que es un dato opcional proporcionado por el cliente. Esto es necesario cuando el proveedor de la wallet admite varias aplicaciones de wallet.</td></tr><tr><td>TRANSACTION_HISTORY_CONNECTION_URL</td><td>[String] La URL para recuperar el historial de transacciones que debe ser proporcionada por 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 ceros 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 Visa con prioridad CDCVM. Para más información, consulte <a href="/pages/ade2fb48bf6e0632477ba000acbb946900d9c428">Configurar la prioridad de CVM de Visa</a>.</td></tr></tbody></table>

</details>

Puede definir un nombre personalizado para el archivo de configuración PLIST, 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 la 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 establezca un código de acceso del dispositivo.
        case .biometricNotSet:
            // Pida al usuario final que registre la biometría (Touch ID / Face ID).
        }
    }
}
```

{% endcode %}

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

Use `TSHPay.walletID` para recuperar el identificador de la wallet.

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

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

Si restablece el SDK, el ID de la wallet se vuelve a generar.

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

{% code lineNumbers="true" %}

```swift
let walletIdentifier = TSHPay.walletID
print("Retrieved wallet ID: \(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:

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

The question should be specific, self-contained, and written in natural language.
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.
