> 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/classic-push-provisioning/es/guia-del-desarrollador/configuracion-del-sdk/ios.md).

# iOS

El SDK de Push Provisioning admite iOS para el aprovisionamiento por push de Apple Pay.

### Requisitos previos <a href="#prerequisites" id="prerequisites"></a>

* iOS 13.0+
* Xcode 14.0+
* Swift 5.0+

> <i class="fa-info-circle">:info-circle:</i>
>
> * Para disfrutar de todas las funciones de Apple Pay, ejecútelo en dispositivos físicos.
> * Realice las pruebas de producción en el entorno de producción en dispositivos de producción, usando perfiles de aprovisionamiento Ad Hoc, TestFlight o la App Store. Realice las pruebas de preproducción desde Xcode.

### Acceso a Push Provisioning <a href="#push-provisioning-access" id="push-provisioning-access"></a>

El aprovisionamiento por push de Apple Pay requiere una habilitación especial de Apple llamada **com.apple.developer.payment-pass-provisioning**. Solicítela enviando un correo electrónico a [iap\_entitlements@apple.com](mailto:apple-pay-provisioning@apple.com).

En su correo electrónico, incluya la siguiente información:

* El nombre de su app.
* El ID de su equipo de desarrollador, disponible en [Apple Developer Membership](https://developer.apple.com/account/#/membership).
* El ADAM ID (el ID numérico único de su app), que se encuentra en App Store Connect o en la App Store vinculada a su app, por ejemplo, <https://apps.apple.com/app/id123456789>.

Una vez que Apple conceda la habilitación, añada la habilitación de distribución a un perfil de aprovisionamiento. Use el mismo perfil para desarrollar la app en Xcode.

En su proyecto, abra o cree el archivo de habilitaciones. Añada la **com.apple.developer.payment-pass-provisioning** clave con un valor booleano `YES`.

Luego, en el destino de su app, vaya a **Build Settings > Signing > Code Signing Entitlements**. Asegúrese de que apunte al archivo de habilitaciones.

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.developer.payment-pass-provisioning</key>
    <true/>
  </dict>
</plist>
```

Además, añada la `In-App Provisioning` capacidad en la configuración de la app:

<figure><img src="/files/b2b2b866271172281203e856ddf65be4e560d57e" alt=""><figcaption><p>Añada la capacidad In-App Provisioning.</p></figcaption></figure>

Para más detalles sobre cómo configurar Apple Pay, consulte [Configuración de Apple Pay](https://developer.apple.com/documentation/passkit/apple_pay/setting_up_apple_pay).

### Integración del SDK de Push Provisioning <a href="#integrating-push-provisioning-sdk" id="integrating-push-provisioning-sdk"></a>

1. Descargue la última versión del SDK de Push Provisioning y extraiga el archivo ZIP.
2. Vaya a la carpeta del proyecto de Xcode y cree una nueva carpeta "TPCSDK".
3. Coloque el archivo extraído `TPCSDKSwift.xcframework` en la carpeta.
4. En el destino de la app, seleccione **General > Frameworks, Libraries, and Embedded Content, haga clic en + > Add Other > haga clic en Add Files**.
5. Seleccione el `TPCSDKSwift.xcframework` y haga clic en **Open**.

<figure><img src="/files/92b5521cc85c04525071b513baa280928fd6155d" alt=""><figcaption><p>Añada el XCFramework al destino de su app.</p></figcaption></figure>

Asegúrese de que `Embed & Sign` esté seleccionado como sigue:

<figure><img src="/files/e0c3ef10ccc57d15b80e3b709874c8ca278e090c" alt=""><figcaption><p>Establezca el framework en Embed &#x26; Sign.</p></figcaption></figure>

Si usa un proyecto Objective-C, establezca `Framework Search Paths` y `Header Search Paths`.

<figure><img src="/files/bbd7ce86c9eff9d980f8650da9e6560c40c15a1e" alt=""><figcaption><p>Establezca Framework Search Paths.</p></figcaption></figure>

<figure><img src="/files/ddc1151f5aa14237f680f374bede03929ff0f9c8" alt=""><figcaption><p>Establezca Header Search Paths.</p></figcaption></figure>

{% tabs %}
{% tab title="Swift" %}

### Configuración <a href="#configuration" id="configuration"></a>

Agregue la siguiente configuración a su aplicación para usar el SDK de Push Provisioning.

Importe el `TPCSDKSwift` módulo en su `AppDelegate.swift`:

```swift
import TPCSDKSwift
```

{% endtab %}

{% tab title="Objective-C" %}

### Configuración <a href="#configuration-1" id="configuration-1"></a>

#### Importe un encabezado en el proyecto <a href="#import-a-header-to-the-project" id="import-a-header-to-the-project"></a>

1. Cree un archivo `Bridging-Header.h` creando un archivo Swift.
2. Importe el archivo de encabezado TPCSDKSwift en `Bridging-Header.h`.

#### Añada el código de configuración a su aplicación <a href="#add-the-configuration-code-to-your-application" id="add-the-configuration-code-to-your-application"></a>

Importe el módulo TPCSDKSwift en su `AppDelegate`:

```objective-c
#import <TPCSDKSwift-Swift.h>
```

Para habilitar la compatibilidad con frameworks de Swift, asegúrese de que existan las siguientes definiciones del proyecto:

```
SWIFT_OBJC_BRIDGING_HEADER=Project/Project-Bridging-Header.h

SWIFT_VERSION=5.0

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=YES
```

{% endtab %}
{% endtabs %}

> <i class="fa-info-circle">:info-circle:</i>
>
> #### Nota <a href="#note" id="note"></a>
>
> Debido a un error en Xcode, debe crear al menos un archivo Swift (puede estar vacío) en el proyecto. Inclúyalo en **Build Phases > Compile Sources**.

Configure el SDK de Push Provisioning en su `application:didFinishLaunchingWithOptions:` función delegada.

{% tabs %}
{% tab title="Swift" %}

```swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Punto de anulación para personalización después del lanzamiento de la aplicación.
 
    let tpcIssuerId = "TPC_ISSUER"
    do {
      try TPCSDK.configure(variant: .PPROD,
                          issuerId: tpcIssuerId)
      // Apple Pay y el aprovisionamiento son compatibles
    } catch {
      // Gestionar TPCError
    } 
    
    return true
  }
```

{% endtab %}

{% tab title="Objective-C" %}

```objective-c
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Punto de anulación para personalización después del lanzamiento de la aplicación.
  NSError *error = nil;
  [TPCSDK configureWithVariant:SdkVariantPROD issuerId:@"TPC_ISSUER" error:&error];
  if (error) {
      NSLog(@"Gestionar TPCError");
  }
  
  return YES;
}
```

{% endtab %}
{% endtabs %}

> <i class="fa-exclamation-circle">:exclamation-circle:</i>
>
> #### Nota <a href="#note-1" id="note-1"></a>
>
> Todas las operaciones de PKPassLibrary (isCardDigitized, getCardDigitizationResult, activatePass, ...) no son seguras para subprocesos. Ejecútelas en un único subproceso. <https://developer.apple.com/documentation/passkit/pkpasslibrary>


---

# 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/classic-push-provisioning/es/guia-del-desarrollador/configuracion-del-sdk/ios.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.
