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

# Android

> Aperçu de la bibliothèque Kotlin de Topsort pour les requêtes d'enchères et le suivi d'événements dans les applications Android

export const IntegrationsCard1AFr = () => {
  return <>
      <style>{`
        .integrations-card-1a-fr {
          display: flex;
          flex-direction: column;
          background-color: #f0f2f4;
          border: 1px solid rgba(0, 0, 0, 0.08);
          border-radius: 12px;
          padding: 1.25rem 1.5rem;
          gap: 0.25rem;
          color: #25253b;
          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.02);
          transition: box-shadow 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
          margin-top: 2rem;
        }

        .integrations-card-1a-fr:hover {
          box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
          border-color: rgba(0, 0, 0, 0.12);
        }

        .dark .integrations-card-1a-fr {
          background-color: #25253b;
          color: #f6f8fa;
          border-color: rgba(255, 255, 255, 0.08);
          box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
        }

        .dark .integrations-card-1a-fr:hover {
          box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
          border-color: rgba(255, 255, 255, 0.12);
        }

        .integrations-card-1a-fr-avatar-row {
          display: flex;
          margin-left: 14px;
          flex-wrap: wrap;
        }

        .integrations-card-1a-fr-avatar {
          width: 44px;
          height: 44px;
          border-radius: 50%;
          border: 2px solid #f0f2f4;
          margin-left: -14px;
          object-fit: cover;
          box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
          pointer-events: none;
          cursor: default;
        }

        .dark .integrations-card-1a-fr-avatar {
          border-color: #25253b;
          box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
        }

        .integrations-card-1a-fr h2 {
          margin: 0;
          line-height: 1.25;
          font-size: clamp(1.25rem, calc(0.875rem + 1.25vw), 1.75rem);
          font-weight: 700;
          letter-spacing: -0.025em;
          color: #111827;
        }

        .dark .integrations-card-1a-fr h2 {
          color: #f9fafb;
        }

        .integrations-card-1a-fr-subtitle {
          font-size: 0.9375rem;
          font-weight: 500;
          line-height: 1.5;
          color: #4b5563;
          margin: 0;
        }

        .dark .integrations-card-1a-fr-subtitle {
          color: #d1d5db;
        }

        .integrations-card-1a-fr p {
          margin: 0;
          line-height: 1.5;
          font-size: 0.875rem;
          color: #374151;
        }

        .dark .integrations-card-1a-fr p {
          color: #d1d5db;
        }

        .integrations-card-1a-fr a {
          color: #0500ff;
          text-decoration: none;
          font-weight: 500;
          transition: color 0.15s ease;
        }

        .integrations-card-1a-fr a:hover {
          color: #0400cc;
        }

        .dark .integrations-card-1a-fr a {
          color: #8280ff;
        }

        .dark .integrations-card-1a-fr a:hover {
          color: #a19fff;
        }

        @media (max-width: 640px) {
          .integrations-card-1a-fr-avatar {
            width: 38px;
            height: 38px;
            margin-left: -12px;
          }

          .integrations-card-1a-fr-avatar-row {
            margin-left: 12px;
          }
        }

        @media (min-width: 1280px) {
          .integrations-card-1a-fr p {
            font-size: 0.6875rem;
            line-height: 1.4;
            letter-spacing: -0.01em;
          }

          .integrations-card-1a-fr h2 {
            font-size: clamp(1rem, calc(0.75rem + 1vw), 1.25rem);
          }

          .integrations-card-1a-fr-subtitle {
            font-size: 0.75rem;
          }
        }
      `}</style>
      <div className="integrations-card-1a-fr">
        <div className="integrations-card-1a-fr-avatar-row">
          <img src="/images/integration-team/agustin.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/amelia.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/bernardita.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/borumy.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/felipe.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/gui.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/javiera.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/linn.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/marcio.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/mateus.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/max.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
          <img src="/images/integration-team/rodrigo.webp" alt="" loading="lazy" className="integrations-card-1a-fr-avatar" />
        </div>

        <h2>Besoin d'aide avec votre intégration Topsort ?</h2>

        <p className="integrations-card-1a-fr-subtitle">
          Parlez-nous, l'équipe d'ingénierie des intégrations.
        </p>

        <p>
          Contactez-nous via <strong>votre canal de messagerie dédié</strong> ou à{" "}
          <a href="mailto:support@topsort.com">support@topsort.com</a>.
        </p>

        <p>
          Si vous n'êtes pas encore client,{" "}
          <a href="https://www.topsort.com/book-a-demo">planifiez une démo</a> avec notre
          équipe de vente.
        </p>
      </div>
    </>;
};

La [bibliothèque Kotlin de Topsort](https://github.com/Topsort/topsort.kt) permet à nos clients d'envoyer facilement des requêtes d'enchères et de suivre les événements au sein des applications Android.

<Warning>Version Java minimale requise : 17.</Warning>

## Installation

Ajoutez la dépendance à votre fichier build.gradle :

```kotlin theme={null}
dependencies {
    implementation 'com.topsort:topsort-kt:2.0.0'
}
```

## Configuration

### Kotlin

```kotlin theme={null}
import android.app.Application
import com.topsort.analytics.Analytics

class KotlinApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        Analytics.setup(
            application = this,
            opaqueUserId = "<VOTRE_OPAQUE_USER_ID>",
            token = "<Token API>"
        )
    }
}
```

### Java

```java theme={null}
import android.app.Application;
import com.topsort.analytics.Analytics;

public class JavaApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Analytics.INSTANCE.setup(this, "<opaqueUserId>", "<Token API>");
    }
}
```

## Signalement des événements

### Kotlin

```kotlin theme={null}
// Achat
fun reportPurchase() {
    val item = PurchasedItem(
        productId = "<ID marketplace pour l'article>",
        unitPrice = 1295,
        quantity = 20
    )
    Analytics.reportPurchase(
        id = "<ID marketplace pour l'achat complet>",
        items = listOf(item),
    )
}

// Clic (promu)
fun reportClickPromoted() {
    val placement = Placement(path = "search_results", location = "position_1")
    Analytics.reportClickPromoted(
        id = "<ID marketplace pour l'article>",
        resolvedBidId = "<L'ID d'enchère du gagnant de l'enchère>",
        placement = placement
    )
}

// Impression (promu)
fun reportImpressionPromoted() {
    val placement = Placement(path = "search_results", location = "position_1")
    Analytics.reportImpressionPromoted(
        id = "<ID marketplace pour l'article>",
        resolvedBidId = "<L'ID d'enchère du gagnant de l'enchère>",
        placement = placement
    )
}
```

## Bannières publicitaires

Ajoutez BannerView à votre XML d'activité :

```xml theme={null}
<com.topsort.analytics.banners.BannerView
    android:id="@+id/bannerView"
    android:layout_width="353dp"
    android:layout_height="103dp" />
```

Configuration dans votre activité :

```kotlin theme={null}
class SampleActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.sample_activity)

        this.lifecycleScope.launch {
            val bannerView = findViewById<BannerView>(R.id.bannerView)
            val bannerConfig = BannerConfig.CategorySingle(slotId = "slot", category = "category")

            bannerView.setup(
                bannerConfig = bannerConfig,
                screenName = "sample_activity",
                onClick = { id, entityType -> onBannerClick(id, entityType) }
            )
        }
    }
}
```

Pour la documentation complète, consultez le [dépôt GitHub](https://github.com/Topsort/topsort.kt).

<IntegrationsCard1AFr />
