Guide · iOS (Swift)
Ajoutez un programme d’affiliation ou de parrainage à votre app iOS.
Le package Swift d’InfluTo fonctionne dans les apps SwiftUI et UIKit. 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 StoreKit 2 et l’App Store Server API.
Mis à jour le 1 novembre 2026
En bref
Ajoutez le package Swift github.com/influto/influto-ios à la cible de votre app, appelez InfluTo.initialize une seule fois au lancement depuis une Task, puis checkAttribution et identifyUser. Sans RevenueCat, la capture StoreKit 2 est intégrée : le SDK observe Transaction.updates et récupère les droits en cours, et vous appelez aussi reportPurchase(verification:) juste après la réussite de product.purchase(). Avec RevenueCat, passez un revenueCatAttributeSetter pour que le SDK puisse marquer l’abonné. iOS 16+, aucune dépendance tierce, pas d’IDFA ni de demande ATT. Comptez un après-midi.
Ce que vous obtenez
Le package dépend uniquement de Foundation, StoreKit 2 et CryptoKit. Il est distribué via Swift Package Manager (il n’y a pas de pod CocoaPods) et placé sous licence MIT. Il requiert iOS 16 et Swift 5.9 (Xcode 15) ou plus récent, et compile aussi pour macOS 13, tvOS 16 et watchOS 9.
Une attribution sans pistage. Un code saisi correspond exactement ; sinon, la correspondance par clic sur le lien relie l’installation à un clic récent sur le lien du créateur, dans un délai de 72 heures. Aucun identifiant publicitaire ni caractéristique de l’appareil, donc aucune demande App Tracking Transparency.
Un champ de code SwiftUI. InfluToReferralCodeInput valide le code pendant la saisie et l’applique d’un tap. En UIKit, intégrez-le dans un UIHostingController.
Capture StoreKit 2 intégrée. Sur les apps en store-direct, le SDK signale lui-même les achats, et InfluTo vérifie chaque transaction signée auprès d’Apple.
Étape 1 : ajoutez le package Swift
Dans Xcode, choisissez File → Add Package Dependencies, collez l’URL du dépôt et ajoutez la bibliothèque InfluTo à la cible de votre app. Ou déclarez-la dans Package.swift :
// Xcode → File → Add Package Dependencies →
// https://github.com/influto/influto-ios (from 1.1.1)
// Or in Package.swift:
.package(url: "https://github.com/influto/influto-ios.git", from: "1.1.1")Étape 2 : initialisez au lancement
Chaque méthode du SDK est asynchrone. Appelez initialize une seule fois au lancement depuis une Task et attendez son résultat. Elle lève une erreur en cas d’échec (clé incorrecte, pas de réseau) : interceptez-la, journalisez-la et continuez ; le lancement suivant réessaiera. En UIKit, démarrez la Task depuis application(_:didFinishLaunchingWithOptions:).
checkAttribution ne lève jamais d’erreur. En cas d’erreur, ou si initialize n’a pas réussi, elle renvoie attributed == false et ne stocke rien. Une réponse positive est conservée sur l’appareil : les appels suivants la renvoient sans requête.
La clé d’API (it_…, dans Setup & SDK) couvre le développement et la production. Ne la laissez pas dans le code versionné ; placez-la par exemple dans un .xcconfig non commité, lu via Info.plist. Un démarrage SwiftUI typique sur une app RevenueCat :
import SwiftUI
import InfluTo
import RevenueCat // only if you use RevenueCat
@main
struct MyApp: App {
init() {
Purchases.configure(withAPIKey: "appl_…") // RevenueCat apps: configure it first
Task { await startInfluTo() }
}
var body: some Scene { WindowGroup { ContentView() } }
}
func startInfluTo() async {
var config = InfluToConfig(
apiKey: Bundle.main.object(forInfoDictionaryKey: "INFLUTO_API_KEY") as? String ?? "",
appVersion: Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String
)
config.revenueCatAttributeSetter = { attrs in
Purchases.shared.attribution.setAttributes(attrs)
}
do {
try await InfluTo.initialize(config)
} catch {
print("InfluTo initialize failed: \(error)") // retried on the next launch
return
}
let attribution = await InfluTo.checkAttribution()
await InfluTo.identifyUser(Purchases.shared.appUserID)
}Étape 3 : connectez les achats
InfluTo ne verse de commission que sur les achats vérifiés auprès du store. Choisissez une seule voie pour iOS :
RevenueCat : passez un revenueCatAttributeSetter, comme dans MyApp.swift ci-dessus ; sans lui, rien ne définit l’attribut sur iOS. Le SDK l’appelle une fois, quand le parrainage est trouvé : configurez donc RevenueCat avant checkAttribution. Connectez ensuite le webhook dans Setup & SDK.
Store-direct (StoreKit 2) : lorsque l’app est réglée sur store-direct dans Paramètres → Validation, initialize commence à observer Transaction.updates et récupère les droits en cours et les transactions non terminées. Chaque transaction est signalée une seule fois, identifiée par son ID de transaction d’origine. Le SDK n’appelle jamais finish() ; c’est toujours votre app qui termine ses transactions.
Un détail de StoreKit compte : les achats effectués dans votre app reviennent à l’appelant de product.purchase(), pas à l’écouteur en arrière-plan. Signalez donc l’achat juste après sa réussite, comme ci-dessous. Les signalements sont dédupliqués : un achat signalé ici et par la capture automatique n’est compté qu’une fois.
Pour relier les transactions à l’ID de votre utilisateur, passez le jeton de compte de StoreKit : product.purchase(options: [.appAccountToken(InfluTo.appAccountToken(forUserID: userID))]), avec le même UUID à chaque fois pour un ID utilisateur donné. reportPurchase lève InfluToError.retryable sur un 503 (réessayez plus tard) et InfluToError.notConfigured sur un 400 (iOS n’est pas encore en store-direct).
// Store-direct only (no RevenueCat). Report right after a purchase — StoreKit
// doesn't send purchases made in your app to the background listener, and
// reports are de-duplicated, so this is safe alongside auto-capture:
if case .success(let verification) = try await product.purchase() {
let r = try await InfluTo.reportPurchase(verification: verification)
}Étape 4 : ajoutez votre clé App Store Server API
Le store-direct nécessite un accès en lecture à l’App Store Server API. InfluTo ne fait que lire ; il ne modifie jamais rien dans votre compte App Store Connect.
- 1
Créez la clé. Dans App Store Connect, ouvrez Utilisateurs et accès → Intégrations → Achats intégrés, créez une clé et téléchargez le fichier .p8. Apple ne permet de le télécharger qu’une fois. Notez l’Issuer ID et le Key ID.
- 2
Importez-la. Dans InfluTo, ouvrez Paramètres → Validation, déposez le .p8 (le Key ID est lu dans le nom de fichier par défaut d’Apple), puis saisissez l’Issuer ID, le Key ID et l’App Store ID numérique de l’app.
- 3
Choisissez l’environnement, puis basculez. Choisissez Sandbox pour vos tests avec TestFlight ou des testeurs sandbox, Production avant la sortie. Quand la vérification des identifiants est au vert, réglez iOS sur Apple — direct. D’ici là, les signalements reçoivent un 400 : vous pouvez donc publier le SDK d’abord sans risque.
À partir de là, InfluTo vérifie chaque heure auprès d’Apple les abonnements attribués (renouvellements, résiliations, remboursements) et annule la commission en cas de remboursement. Aucun backend à vous n’est nécessaire.
Étape 5 : testez avec TestFlight ou un testeur sandbox
Les achats TestFlight et sandbox ne déplacent jamais d’argent et ne modifient pas vos statistiques :
- 1
Simulez un achat. Simuler un achat dans Setup & SDK envoie un achat de test sandbox dans le vrai pipeline d’InfluTo. Il ne vérifie que le côté InfluTo, jamais vos identifiants.
- 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 TestFlight et lancez l’app. Saisir le code est le test le plus fiable.
- 3
Achetez avec un compte sandbox. Avec l’environnement Apple réglé sur Sandbox, achetez avec un testeur TestFlight ou sandbox. Le journal d’intégration, basculé sur Sandbox, affiche l’achat attribué à votre code.
Remettez l’environnement sur Production avant la sortie : InfluTo vérifie exactement l’environnement que vous choisissez. clearAttribution() réinitialise l’appareil pour un nouvel essai.
Remarques sur iOS
Des détails qui comptent pour la validation par Apple et pour le store-direct :
StoreKit 2 uniquement. Le store-direct exige la transaction signée (JWS) ; n’envoyez jamais la représentation JSON non signée. Le SDK envoie le JWS même si la vérification sur l’appareil échoue, et InfluTo le vérifie côté serveur.
Privacy manifest inclus. Le package contient PrivacyInfo.xcprivacy : aucun pistage, aucun domaine de pistage, et les types de données collectés, non liés à l’identité. La documentation sur la confidentialité les associe à vos réponses App Privacy.
État local. Le SDK conserve son état dans la suite UserDefaults com.influto.sdk. Il survit aux mises à jour de l’app ; supprimer l’app l’efface.
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 le code de démarrage et d’achat, vous donne un lien pour importer vous-même le .p8, lance la vérification des identifiants et confirme un achat sandbox attribué.
SDK d’affiliation iOS : vos questions.
Existe-t-il un SDK d’affiliation pour les apps iOS écrites en Swift ?
Oui. Le package Swift d’InfluTo (github.com/influto/influto-ios, MIT) ajoute aux apps SwiftUI et UIKit la détection des installations parrainées, les codes de parrainage et l’attribution des achats. Il requiert iOS 16 et Swift 5.9 ou plus récent, sans dépendance tierce.
Puis-je suivre les parrainages d’influenceurs sur iOS sans la demande ATT ?
Oui. InfluTo n’utilise pas l’IDFA et ne fait jamais de correspondance par caractéristiques de l’appareil ; les codes saisis correspondent exactement, et la correspondance par clic sur le lien est un recours sur 72 heures, limité à votre app. Le privacy manifest du package ne déclare aucun pistage.
Est-ce que ça marche sans RevenueCat ?
Oui. La capture StoreKit 2 est intégrée, et InfluTo vérifie chaque transaction signée avec l’App Store Server API, grâce à une clé Achats intégrés en lecture seule que vous importez. Vous n’avez pas besoin de serveur à vous.
Existe-t-il un pod CocoaPods ?
Non. Le SDK est distribué uniquement via Swift Package Manager et référencé sur le Swift Package Index.
Les achats TestFlight fonctionnent-ils ?
Oui, si l’environnement Apple de l’app est réglé sur Sandbox dans Réglages → Validation. Les achats TestFlight et sandbox apparaissent dans le journal d’intégration, mais ne déplacent jamais d’argent et ne modifient pas vos statistiques.
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 $.
Lancez les codes de parrainage dans votre prochain build TestFlight.
Un package Swift, un seul chemin de validation, un dépôt remboursable. 0 $ par mois ; 10 % uniquement sur le revenu que les créateurs vous apportent.
Commencer gratuitement