Guide · Android (Kotlin)
Ajoutez un programme d’affiliation ou de parrainage à votre app Android.
Le SDK Android d’InfluTo est écrit pour Kotlin et les coroutines. Il vous indique quel créateur a parrainé une installation, accepte les codes de parrainage saisis et fait vérifier chaque achat, via RevenueCat ou directement depuis Google Play Billing.
Mis à jour le 1 novembre 2026
En bref
Ajoutez to.influ:android-sdk depuis Maven Central, appelez InfluTo.initialize une fois dans Application.onCreate (c’est une fonction suspend), puis checkAttribution et identifyUser. Avec RevenueCat, il n’y a rien d’autre à brancher dans le code : le SDK repère RevenueCat tout seul et étiquette l’abonné. Sans RevenueCat, ajoutez to.influ:android-sdk-billing ; il apporte Play Billing Library 9.0.0, capture les achats automatiquement et reçoit aussi chaque achat de votre propre PurchasesUpdatedListener. minSdk 24 et une toolchain Java 17. Prévoyez un après-midi, surtout pour la partie achats.
Étape 1 : ajoutez les artefacts dont vous avez besoin
Le SDK est découpé en trois artefacts sur Maven Central, tous à la même version ; mavenCentral() doit donc figurer dans vos dépôts. N’ajoutez que le nécessaire : chaque module complémentaire embarque le cœur, et les artefacts core et billing livrent leurs propres règles R8/ProGuard.
// build.gradle.kts
dependencies {
implementation("to.influ:android-sdk:1.1.1")
// optional: Compose code field (InfluToReferralCodeInput)
implementation("to.influ:android-sdk-ui:1.1.1")
// optional: store-direct purchase auto-capture
implementation("to.influ:android-sdk-billing:1.1.1")
}| Artefact | À ajouter quand | Ce qu’il apporte |
|---|---|---|
| android-sdk | Toujours | Le SDK ; ajoute la permission INTERNET |
| android-sdk-ui | Vous voulez le champ de code Compose prêt à l’emploi | InfluToReferralCodeInput (Material 3) |
| android-sdk-billing | Votre app est en direct avec le store (sans RevenueCat) | Capture automatique des achats ; ajoute Google Play Billing Library 9.0.0 (billing-ktx) et la permission com.android.vending.BILLING |
Étape 2 : initialisez dans Application.onCreate
initialize est une fonction suspend. Appelez-la une fois au démarrage et attendez son résultat ; tant qu’elle n’a pas réussi, checkAttribution et reportPurchase lèvent InfluToError.NotInitialized. Elle lève une exception en cas d’échec (clé incorrecte, pas de réseau) : interceptez-la, journalisez-la et poursuivez.
Utilisez Application.onCreate ou un scope valable pour toute l’app, pas le onCreate d’une activité, qui s’exécute de nouveau à chaque changement de configuration. Vous n’êtes pas dans une coroutine ? Chaque méthode réseau a une surcharge avec callback. Les callbacks s’exécutent sur un thread d’arrière-plan : repassez sur le thread principal avant de toucher à l’interface.
La clé API (it_…, dans Configuration et SDK) couvre le développement et la production. Gardez-la dans un champ BuildConfig alimenté par une propriété Gradle de local.properties ou par les secrets de votre CI. Un démarrage type sur une app RevenueCat :
class MyApp : Application() {
private val appScope = MainScope()
override fun onCreate() {
super.onCreate()
// RevenueCat apps: configure it first
Purchases.configure(PurchasesConfiguration.Builder(this, "goog_…").build())
appScope.launch {
try {
InfluTo.initialize(this@MyApp, InfluToConfig(
apiKey = BuildConfig.INFLUTO_API_KEY,
appVersion = BuildConfig.VERSION_NAME,
))
} catch (e: Exception) {
Log.w("InfluTo", "initialize failed", e) // retried on the next launch
return@launch
}
val attribution = InfluTo.checkAttribution()
InfluTo.identifyUser(Purchases.sharedInstance.appUserID)
}
}
}Étape 3 : codes de parrainage et champ Compose
applyCode(code) est un appel suspend qui valide un code et l’applique s’il est valide. Les espaces sont retirés et le code est mis en majuscules ; un code invalide renvoie valid = false avec un errorCode : INVALID_FORMAT, CODE_NOT_FOUND, CODE_EXPIRED, NETWORK_ERROR ou UNKNOWN.
Avec android-sdk-ui, InfluToReferralCodeInput est un composable Material 3 qui valide pendant la saisie, applique le code au toucher, le préremplit pour une installation attribuée par lien et accepte vos textes traduits. Il n’affiche le nom d’un créateur que si vous activez showReferrerName.
Étape 4 : connectez les achats
InfluTo ne verse de commission que sur les achats vérifiés auprès du store. Choisissez une voie pour Android :
RevenueCat : rien à brancher dans le code. Quand un parrainage est trouvé ou qu’un code est appliqué, le SDK repère le SDK RevenueCat et définit influto_code et influto_referral ; passez revenueCatAttributeSetter pour le faire explicitement. Configurez d’abord RevenueCat, et n’ajoutez pas android-sdk-billing.
En direct avec le store (Play Billing) : ajoutez android-sdk-billing. Sur une app en direct avec le store, initialize démarre un observateur avec sa propre connexion Play Billing, qui signale les nouveaux achats et passe en revue les achats existants à chaque démarrage. Seuls les achats PURCHASED sont envoyés, une seule fois chacun, selon le purchase token.
Les produits à achat unique et consommables exigent productId, plus price et currency : sans productId, l’achat est vérifié comme un abonnement et échoue ; sans prix, il est enregistré à 0 $. Listez-les dans oneTimeProductIds et la capture automatique ajoute les deux. Une erreur 409 signifie qu’un achat unique est encore en attente.
La plupart des apps ont leur propre BillingClient. Transmettez aussi chaque achat au module depuis votre PurchasesUpdatedListener, pour qu’il soit signalé dès qu’il a lieu. La déduplication est la même : rien n’est signalé deux fois :
override fun onPurchasesUpdated(result: BillingResult, purchases: MutableList<Purchase>?) {
if (result.responseCode != BillingClient.BillingResponseCode.OK || purchases == null) return
scope.launch {
for (purchase in purchases) {
InfluToBilling.report(context, purchase) // subscriptions
// one-time products: InfluToBilling.report(context, purchase, oneTime = true, price = 4.99, currency = "EUR")
}
}
}Étape 5 : ajoutez le compte de service Google Play
Le mode direct avec les stores demande un accès en lecture à l’API Google Play Developer. InfluTo se contente de lire : il ne modifie jamais rien dans votre Play Console.
- 1
Activez l’API. Dans Google Cloud, activez la Google Play Android Developer API et créez un compte de service avec une clé JSON.
- 2
Accordez l’accès dans la Play Console. Dans Utilisateurs et autorisations, invitez l’adresse e-mail du compte de service et donnez-lui l’autorisation Afficher les données financières, les commandes et les réponses aux enquêtes de résiliation pour l’app.
- 3
Importez, validez, basculez. Importez la clé JSON dans Paramètres → Validation, puis cliquez sur Enregistrer et valider. Quand le contrôle passe au vert, réglez Android sur Google — direct.
Les nouvelles autorisations Google peuvent mettre jusqu’à 48 heures à atteindre l’API ; InfluTo affiche « propagation en cours » pendant ce temps. Tant que vous n’avez pas basculé, les rapports d’achat reçoivent une erreur 400 : vous pouvez donc publier le SDK d’abord sans risque.
Étape 6 : testez avec un testeur de licence
Les achats de test ne déplacent jamais d’argent et ne modifient pas vos statistiques :
- 1
Simulez un achat. Simuler un achat, dans Configuration et SDK, envoie un achat de test sandbox dans le vrai pipeline d’InfluTo. Saisissez l’un de vos codes pour voir comment il est reconnu.
- 2
Installez via un lien de parrainage. Rejoignez votre campagne avec un second compte créateur, ouvrez son lien sur un appareil de test, installez votre build de test et lancez l’app. Saisir le code reste le test le plus fiable.
- 3
Achetez en tant que testeur de licence. Achetez avec un compte testeur de licence Google Play. Le journal d’intégration, en mode Sandbox, montre l’achat attribué à votre code ; avec debug = true, le SDK consigne chaque étape dans Logcat sous le tag InfluTo.
clearAttribution() réinitialise l’appareil pour un nouvel essai ; vider le stockage de l’app ou la réinstaller donne un départ plus propre.
Remarques sur Android
Quelques détails propres à la plateforme :
Coroutines d’abord. Les méthodes réseau sont des fonctions suspend ; getReferralCode(), getPrefilledCode() et clearAttribution() sont des fonctions classiques.
Autorisations. Le module de base ajoute INTERNET ; android-sdk-billing ajoute com.android.vending.BILLING. La documentation sur la confidentialité détaille ce qu’il faut déclarer dans le formulaire Sécurité des données de Google Play.
Version de Play Billing. android-sdk-billing expose Play Billing Library 9.0.0, que Gradle résout avec votre propre dépendance Billing.
Pas d’identifiant publicitaire. InfluTo n’utilise pas l’identifiant publicitaire, ne suit pas les utilisateurs d’une app à l’autre et ne fait jamais de correspondance à partir des caractéristiques de l’appareil.
Ou laissez votre agent de code s’en charger
Connectez le serveur MCP d’InfluTo à Claude Code, Codex ou Cursor et demandez l’intégration : l’agent écrit les lignes Gradle et le code de démarrage, vous donne un lien pour importer vous-même le JSON du compte de service, lance la vérification des identifiants et confirme un achat de test attribué.
SDK d’affiliation Android : vos questions.
Existe-t-il un SDK d’affiliation pour les apps Android écrites en Kotlin ?
Oui. to.influ:android-sdk, sur Maven Central (licence MIT, code source sur github.com/influto/influto-android), ajoute la détection des installations parrainées, les codes de parrainage et l’attribution des achats aux apps Android natives. Il requiert minSdk 24 et une chaîne d’outils Java 17, et le module de base ne dépend que de kotlinx-coroutines.
Ai-je besoin de Google Play Billing Library ?
Seulement avec le mode direct avec les stores. android-sdk-billing ajoute Play Billing Library 9.0.0 (billing-ktx) et l’autorisation BILLING. Les apps RevenueCat utilisent uniquement le SDK de base.
Est-ce compatible avec RevenueCat sur Android ?
Oui. Le SDK détecte tout seul le SDK RevenueCat et définit influto_code et influto_referral sur l’abonné, ou bien vous passez revenueCatAttributeSetter explicitement. Ensuite, le webhook de RevenueCat envoie chaque achat, renouvellement et remboursement à InfluTo.
Gère-t-il les consommables et les achats uniques ?
Oui. Listez leurs identifiants de produit dans oneTimeProductIds pour que les achats capturés soient validés comme des achats uniques, et transmettez-les avec le prix et la devise si votre code de facturation n’expose pas le prix. Les remboursements d’achats uniques Google Play sont détectés et la commission est annulée.
Combien ça coûte ?
0 $ par mois. Pour chaque achat vérifié, vous payez la commission que vous avez fixée, plus 10 % du même revenu (7 %, 5 % ou 3 % selon le volume). Le portefeuille prépayé démarre à 50 $ et reste remboursable ; InfluTo verse les créateurs chaque mois via Stripe Connect dans 33 pays, dès qu’ils ont gagné 20 $.
Intégrez les codes de parrainage dès votre prochaine version.
Une ligne Gradle, un seul parcours de validation, un dépôt remboursable. 0 $ par mois ; 10 % uniquement sur les revenus apportés par les créateurs.
Commencer gratuitement