---
title: "Airbridge"
description: "Connectez Adapty à Airbridge pour suivre vos insights marketing et d'attribution."
---

[Airbridge](https://www.airbridge.io/) propose une analyse intégrée des performances marketing pour les sites web et les applications mobiles, en consolidant les données collectées depuis plusieurs appareils, plateformes et canaux. Grâce au moteur de résolution d'identité d'Airbridge, vous pouvez regrouper les données d'identité client dispersées issues des interactions web et app en une identité unifiée basée sur les personnes, ce qui permet une attribution plus précise.

Adapty vous fournit un ensemble complet de données pour suivre les [événements d'abonnement](events) des stores en un seul endroit. Avec Adapty, vous pouvez facilement observer le comportement de vos abonnés, comprendre leurs préférences et utiliser ces informations pour communiquer avec eux de manière ciblée et efficace.

L'intégration entre Adapty et Airbridge fonctionne de deux façons principales.

1. **Réception des données d'attribution depuis Airbridge**
   Une fois l'intégration Airbridge configurée, Adapty commencera à recevoir des données d'attribution depuis Airbridge. Vous pouvez consulter ces données directement sur la page de l'utilisateur.
2. **Envoi des événements d'abonnement à Airbridge**
   Adapty peut envoyer à Airbridge tous les événements d'abonnement configurés dans votre intégration. Vous pourrez ainsi suivre ces événements depuis le tableau de bord Airbridge. Cette intégration est particulièrement utile pour évaluer l'efficacité de vos campagnes publicitaires.

## Configurer l'intégration \{#set-up-integration\}

### Connecter Adapty à Airbridge

Pour intégrer Airbridge, rendez-vous dans [Integrations > Airbridge](https://app.adapty.io/integrations/airbridge), activez le bouton et remplissez les champs.

Commencez par renseigner vos identifiants pour établir la connexion entre vos profils Airbridge et Adapty. Le nom de l'application Airbridge et le token API Airbridge sont obligatoires.

  <img src="/assets/shared/img/2b31d90-Untitled-1_1.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

Vous les trouverez tous les deux dans votre tableau de bord Airbridge, dans la section [Third-party Integrations > Adapty](https://app.airbridge.io/app/testad/integrations/third-party/adapty).

  <img src="/assets/shared/img/5a2f627-Screenshot_2023-02-21_at_11.19.29_AM.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

Le champ Adapty API token est pré-généré par le backend Adapty. Vous devrez copier la valeur de l'Adapty API token et la coller dans le tableau de bord Airbridge, dans le champ Adapty Authorization Token.

  <img src="/assets/shared/img/ff422d1-CleanShot_2023-03-01_at_17.11.412x.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

### Configurer les événements et les tags \{#configure-events-and-tags\}

Sous les identifiants, trois groupes d'événements peuvent être envoyés à Airbridge depuis Adapty.

  <img src="/assets/shared/img/eb4e3a9-CleanShot_2023-08-22_at_13.58.472x.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

Activez simplement ceux dont vous avez besoin.  

### Connectez votre application à Airbridge \{#connect-your-app-to-airbridge\}

Pour l'intégration, vous devez passer `airbridge_device_id` au profile builder et appeler `setIntegrationIdentifier` comme illustré dans l'exemple ci-dessous :

<Tabs groupId="current-os" queryString>
<TabItem value="swift" label="iOS (Swift)" default>
```swift showLineNumbers

do {
    try await Adapty.setIntegrationIdentifier(
        key: "airbridge_device_id", 
        value: AirBridge.deviceUUID()
    )
} catch {
    // handle the error
}
```
</TabItem>
<TabItem value="kotlin" label="Android (Kotlin)" default>
```kotlin showLineNumbers
Airbridge.getDeviceInfo().getUUID(object: AirbridgeCallback.SimpleCallback<String>() {
    override fun onSuccess(result: String) {
        Adapty.setIntegrationIdentifier("airbridge_device_id", result) { error ->
            if (error != null) {
                // handle the error
            }
        }
    }
    override fun onFailure(throwable: Throwable) {
    }
})
```
</TabItem>
<TabItem value="flutter" label="Flutter (Dart)" default>
```javascript showLineNumbers

final deviceUUID = await Airbridge.state.deviceUUID;

try {
    await Adapty().setIntegrationIdentifier(
        key: "airbridge_device_id", 
        value: deviceUUID,
    );
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
    // handle the error
}
```
</TabItem>
<TabItem value="rn" label="React Native (TS)" default>
```typescript showLineNumbers

try {
  const deviceId = await Airbridge.state.deviceUUID();

  await adapty.setIntegrationIdentifier("airbridge_device_id", deviceId);
} catch (error) {
  // handle `AdaptyError`
}
```
</TabItem>
</Tabs>

Pour en savoir plus sur airbridgeDeviceId, consultez la [documentation Airbridge.](https://help.airbridge.io/en/developers/airbridge-device-id-faq)

Il peut falloir jusqu'à 24 heures à Adapty pour recevoir les données d'attribution Airbridge après un événement d'abonnement. Adapty les affichera immédiatement sur le tableau de bord.

## Structure d'un événement \{#event-structure\}

Adapty envoie les événements sélectionnés à Airbridge, tels que configurés dans la section **Events names** de la [**page d'intégration Airbridge**](https://app.adapty.io/integrations/airbridge). Chaque événement est structuré comme suit :

```json
{
  "user": {
    "externalUserID": "user_12345",
    "externalUserEmail": "user@example.com",
    "attributes": {
      "is_premium": true
    }
  },
  "device": {
    "deviceUUID": "550e8400-e29b-41d4-a716-446655440000",
    "deviceModel": "iPhone 14 Pro",
    "osName": "iOS",
    "osVersion": "17.0.1",
    "locale": "en-US",
    "timezone": "America/New_York",
    "ifa": "00000000-0000-0000-0000-000000000000",
    "ifv": "00000000-0000-0000-0000-000000000000"
  },
  "app": {
    "packageName": "com.example.app",
    "version": "1.2.3"
  },
  "eventUUID": "d4f6f1f4-96fb-4a31-bafd-599fef77be90",
  "eventTimestamp": 1709294400000,
  "eventData": {
    "goal": {
      "category": "airbridge.subscribe",
      "customAttributes": {
        "isTrialConverted": true
      },
      "semanticAttributes": {
        "transactionID": "GPA.3383-4699-1373-07113",
        "totalValue": 9.99,
        "currency": "USD",
        "period": "P1M",
        "isRenewal": true,
        "renewalCount": 2,
        "products": [
          {
            "productID": "yearly.premium.6999",
            "name": "yearly.premium.6999",
            "position": 1
          }
        ]
      }
    }
  }
}
```

Where:

| Paramètre                                    | Type    | Description                                                    |
|:---------------------------------------------|:--------|:---------------------------------------------------------------|
| `user`                                       | Object  | Informations sur l'utilisateur.                                |
| `user.externalUserID`                        | String  | L'identifiant Customer User ID de l'utilisateur.               |
| `user.externalUserEmail`                     | String  | L'adresse e-mail de l'utilisateur (si disponible).             |
| `user.attributes`                            | Object  | Attributs personnalisés de l'utilisateur.                      |
| `device`                                     | Object  | Informations sur l'appareil.                                   |
| `device.deviceUUID`                          | String  | L'UUID d'appareil Airbridge.                                   |
| `device.deviceModel`                         | String  | Modèle de l'appareil (ex. : « iPhone 14 Pro »).                |
| `device.osName`                              | String  | Nom du système d'exploitation (ex. : « iOS », « Android »).    |
| `device.osVersion`                           | String  | Version du système d'exploitation.                             |
| `device.ifa`                                 | String  | **iOS uniquement**. ID for Advertisers.                        |
| `device.ifv`                                 | String  | **iOS uniquement**. ID for Vendors.                            |
| `device.gaid`                                | String  | **Android uniquement**. Google Advertising ID.                 |
| `app`                                        | Object  | Informations sur l'application.                                |
| `app.packageName`                            | String  | Le nom de package / bundle ID de l'application.                |
| `app.version`                                | String  | La version de l'application.                                   |
| `eventUUID`                                  | String  | Identifiant unique de l'événement dans Adapty.                 |
| `eventTimestamp`                             | Long    | Horodatage de l'événement en millisecondes.                    |
| `eventData`                                  | Object  | Détails de l'événement.                                        |
| `eventData.goal.category`                    | String  | La catégorie d'événement Airbridge (mappée depuis l'événement Adapty). |
| `eventData.goal.semanticAttributes`          | Object  | Attributs d'événement standard.                                |
| `...semanticAttributes.transactionID`        | String  | ID de transaction du store.                                    |
| `...semanticAttributes.totalValue`           | Float   | Montant des revenus.                                           |
| `...semanticAttributes.currency`             | String  | Code de devise (ex. : « USD »).                                |
| `...semanticAttributes.period`               | String  | Période d'abonnement au format de durée ISO 8601 (ex. : « P1M »). |
| `...semanticAttributes.isRenewal`            | Boolean | `true` s'il s'agit d'une transaction de renouvellement.        |
| `...semanticAttributes.renewalCount`         | Integer | Nombre de renouvellements réussis.                             |
| `...semanticAttributes.products`             | Array   | Liste des produits impliqués dans l'événement.                 |
| `...semanticAttributes.products[].productID` | String  | L'ID produit du store (ex. : « yearly.premium.6999 »).         |
| `...semanticAttributes.products[].name`      | String  | Identique à `productID`.                                       |
| `...semanticAttributes.products[].position`  | Integer | La position du produit dans la liste (toujours 1).             |

## Dépannage \{#troubleshooting\}

### `access_level_updated` apparaît comme échoué dans le Flux d'événements \{#access_level_updated-shows-as-failed-in-the-event-feed\}

`access_level_updated` est un **événement réservé aux webhooks**. Adapty ne l'envoie jamais à cette intégration. Mais Adapty enregistre un résultat pour chaque intégration activée, et un événement non pris en charge est affiché comme un échec.