Guide · iOS (Swift)
Baue ein Affiliate- oder Empfehlungsprogramm in deine iOS-App ein.
Das InfluTo-Swift-Package läuft in SwiftUI- und UIKit-Apps. Es zeigt dir, welcher Creator einen Install vermittelt hat, nimmt eingetippte Empfehlungscodes entgegen und lässt jeden Kauf verifizieren – über RevenueCat oder direkt über StoreKit 2 und die App Store Server API.
Aktualisiert: 1. November 2026
Kurz gesagt
Füge das Swift-Package github.com/influto/influto-ios deinem App-Target hinzu und rufe InfluTo.initialize einmal beim Start aus einem Task auf. Danach folgen checkAttribution und identifyUser. Ohne RevenueCat ist die StoreKit-2-Erfassung eingebaut: Das SDK beobachtet Transaction.updates und holt aktuelle Berechtigungen nach. Zusätzlich rufst du direkt nach einem erfolgreichen product.purchase() reportPurchase(verification:) auf. Mit RevenueCat übergibst du einen revenueCatAttributeSetter, damit das SDK den Abonnenten markieren kann. iOS 16+, keine Abhängigkeiten von Drittanbietern, keine IDFA und kein ATT-Dialog. Plane einen Nachmittag ein.
Das bekommst du
Das Package hängt nur von Foundation, StoreKit 2 und CryptoKit ab, wird über den Swift Package Manager ausgeliefert (einen CocoaPods-Pod gibt es nicht) und steht unter MIT-Lizenz. Es braucht iOS 16 und Swift 5.9 (Xcode 15) oder neuer und lässt sich auch für macOS 13, tvOS 16 und watchOS 9 bauen.
Attribution ohne Tracking. Ein eingegebener Code ist ein exakter Treffer. Sonst ordnet das Link-Click-Matching den Install einem Tipp auf den Link des Creators innerhalb der letzten 72 Stunden zu. Keine Werbe-ID und keine Gerätemerkmale, deshalb auch kein App-Tracking-Transparency-Dialog.
Ein SwiftUI-Codefeld. InfluToReferralCodeInput prüft den Code schon beim Tippen und wendet ihn per Tipp an. In UIKit bindest du es über einen UIHostingController ein.
StoreKit-2-Erfassung eingebaut. Bei Store-direct-Apps meldet das SDK Käufe selbst, und InfluTo prüft jede signierte Transaktion bei Apple.
Schritt 1: Swift-Package hinzufügen
Wähle in Xcode File → Add Package Dependencies, füge die Repository-URL ein und füge die InfluTo-Bibliothek deinem App-Target hinzu. Oder deklariere sie in der 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")Schritt 2: Beim Start initialisieren
Jede SDK-Methode ist async. Rufe initialize einmal beim Start aus einem Task auf und warte darauf. Bei einem Fehler (falscher Key, kein Netz) wirft die Methode einen Fehler: Fange ihn ab, logge ihn und mach weiter. Beim nächsten Start wird es erneut versucht. In UIKit startest du den Task in application(_:didFinishLaunchingWithOptions:).
checkAttribution wirft nie einen Fehler. Bei einem Fehler oder wenn initialize nicht erfolgreich war, liefert es attributed == false und speichert nichts. Ein positives Ergebnis wird auf dem Gerät gespeichert, spätere Aufrufe liefern es also ohne Anfrage zurück.
Der API-Key (it_…, unter Setup & SDK) gilt für Entwicklung und Produktion. Halte ihn aus dem eingecheckten Quellcode heraus, zum Beispiel in einer .xcconfig, die nicht im Repository liegt, und lies ihn über die Info.plist aus. Ein typischer SwiftUI-Start in einer App mit 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)
}Schritt 3: Käufe anbinden
InfluTo zahlt Provision nur für Käufe, die beim Store verifiziert sind. Wähle für iOS einen Weg:
RevenueCat: Übergib einen revenueCatAttributeSetter, wie oben in MyApp.swift. Ohne ihn setzt unter iOS nichts das Attribut. Das SDK ruft ihn einmal auf, sobald die Empfehlung gefunden ist, konfiguriere RevenueCat also vor checkAttribution. Verbinde danach den Webhook unter Setup & SDK.
Store-direct (StoreKit 2): Ist die App unter Einstellungen → Validierung auf Store-direct gestellt, beobachtet initialize ab dann Transaction.updates und holt aktuelle Berechtigungen und offene Transaktionen nach. Jede Transaktion wird einmal gemeldet, über ihre ursprüngliche Transaktions-ID. Das SDK ruft nie finish() auf. Deine App beendet ihre Transaktionen weiterhin selbst.
Ein StoreKit-Detail ist wichtig: Käufe innerhalb deiner App gehen an den Aufrufer von product.purchase() zurück, nicht an den Listener im Hintergrund. Melde den Kauf deshalb direkt nach dem Erfolg, wie unten gezeigt. Meldungen werden dedupliziert, ein Kauf, der hier und per Auto-Capture gemeldet wird, zählt also nur einmal.
Um Transaktionen mit deiner Nutzer-ID zu verknüpfen, übergib das Account-Token von StoreKit: product.purchase(options: [.appAccountToken(InfluTo.appAccountToken(forUserID: userID))]). Für dieselbe Nutzer-ID ergibt das immer dieselbe UUID. reportPurchase wirft bei einem 503 InfluToError.retryable (später erneut versuchen) und bei einem 400 InfluToError.notConfigured (iOS ist noch nicht auf Store-direct gestellt).
// 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)
}Schritt 4: App Store Server API Key hinzufügen
Store-direct braucht Lesezugriff auf die App Store Server API. InfluTo liest nur und ändert nie etwas in deinem App-Store-Connect-Konto.
- 1
Key erstellen. Öffne in App Store Connect Users and Access → Integrations → In-App Purchase, erstelle einen Key und lade die .p8-Datei herunter. Apple erlaubt den Download nur einmal. Notiere dir die Issuer ID und die Key ID.
- 2
Hochladen. Öffne in InfluTo Einstellungen → Validierung, ziehe die .p8-Datei hinein (die Key ID wird aus dem Standarddateinamen von Apple gelesen) und gib Issuer ID, Key ID und die numerische App-Store-ID deiner App ein.
- 3
Umgebung wählen, dann umschalten. Wähle Sandbox, solange du mit TestFlight oder Sandbox-Testern testest, und Production vor dem Release. Sobald die Prüfung der Zugangsdaten grün ist, stelle iOS auf Apple — direkt. Bis dahin bekommen Meldungen einen 400, du kannst das SDK also bedenkenlos zuerst ausliefern.
Ab dann prüft InfluTo zugeordnete Abos stündlich bei Apple auf Verlängerungen, Kündigungen und Rückerstattungen und nimmt die Provision bei Rückerstattungen zurück. Ein eigenes Backend brauchst du dafür nicht.
Schritt 5: Mit TestFlight oder einem Sandbox-Tester testen
TestFlight- und Sandbox-Käufe bewegen kein Geld und verändern deine Statistiken nicht:
- 1
Einen Kauf simulieren. Kauf simulieren unter Setup & SDK schickt einen Sandbox-Testkauf durch die echte Pipeline von InfluTo. Das prüft nur die Seite von InfluTo, nie deine Zugangsdaten.
- 2
Über einen Empfehlungslink installieren. Tritt deiner Kampagne mit einem zweiten Creator-Konto bei, öffne den Link auf einem Testgerät, installiere deinen TestFlight-Build und starte die App. Am zuverlässigsten testest du, indem du den Code eintippst.
- 3
Mit einem Sandbox-Konto kaufen. Stelle die Apple-Umgebung auf Sandbox und kaufe als TestFlight- oder Sandbox-Tester. Im Integrationsprotokoll, auf Sandbox umgeschaltet, siehst du den Kauf deinem Code zugeordnet.
Stelle die Umgebung vor dem Release wieder auf Production: InfluTo prüft genau gegen die Umgebung, die du wählst. clearAttribution() setzt das Gerät für einen neuen Durchlauf zurück.
Hinweise zu iOS
Details, die für das Review und für Store-direct wichtig sind:
Nur StoreKit 2. Store-direct braucht die signierte Transaktion (JWS). Sende nie die unsignierte JSON-Darstellung. Das SDK sendet die JWS auch dann, wenn die Prüfung auf dem Gerät fehlschlägt, und InfluTo verifiziert sie auf dem Server.
Privacy Manifest inklusive. Das Package enthält PrivacyInfo.xcprivacy: kein Tracking, keine Tracking-Domains und die erhobenen Datentypen, nicht mit der Identität verknüpft. In der Datenschutzdokumentation siehst du, wie sich das auf deine Angaben zum App-Datenschutz überträgt.
Lokaler Zustand. Das SDK speichert seinen Zustand in der UserDefaults-Suite com.influto.sdk. Er bleibt bei App-Updates erhalten und verschwindet, wenn die App gelöscht wird.
Oder lass es deinen Coding-Agenten erledigen
Verbinde den MCP-Server von InfluTo mit Claude Code, Codex oder Cursor und bitte um die Integration: Der Agent schreibt den Start- und den Kaufcode, gibt dir einen Link, über den du die .p8-Datei selbst hochlädst, führt die Prüfung der Zugangsdaten aus und bestätigt einen zugeordneten Sandbox-Kauf.
Affiliate-SDK für iOS: die Antworten.
Gibt es ein Affiliate-SDK für iOS-Apps in Swift?
Ja. Das InfluTo-Swift-Package (github.com/influto/influto-ios, MIT) ergänzt SwiftUI- und UIKit-Apps um die Erkennung von Installs über Empfehlungen, Empfehlungscodes und Kauf-Attribution. Es braucht iOS 16 und Swift 5.9 oder neuer und hat keine Abhängigkeiten von Drittanbietern.
Kann ich Influencer-Empfehlungen unter iOS ohne ATT-Dialog tracken?
Ja. InfluTo nutzt die IDFA nicht und gleicht nie über Gerätemerkmale ab. Eingegebene Codes sind exakt, und das Link-Click-Matching ist ein 72-Stunden-Fallback, das auf deine App beschränkt ist. Das Privacy Manifest des Packages deklariert kein Tracking.
Funktioniert es ohne RevenueCat?
Ja. Die StoreKit-2-Erfassung ist eingebaut, und InfluTo verifiziert jede signierte Transaktion über die App Store Server API mit einem schreibgeschützten In-App-Purchase-Key, den du hochlädst. Einen eigenen Server brauchst du nicht.
Gibt es einen CocoaPods-Pod?
Nein. Das SDK wird nur über den Swift Package Manager ausgeliefert und ist im Swift Package Index gelistet.
Funktionieren Käufe über TestFlight?
Ja, wenn die Apple-Umgebung der App unter Einstellungen → Validierung auf Sandbox steht. TestFlight- und Sandbox-Käufe erscheinen im Integrationsprotokoll, bewegen aber nie Geld und verändern deine Statistiken nicht.
Was kostet es?
0 $ im Monat. Pro verifiziertem Kauf zahlst du die Provision, die du festlegst, plus 10 % desselben Umsatzes (7 %, 5 % oder 3 % bei höherem Volumen). Das Prepaid-Guthaben startet bei 50 $ und ist rückerstattbar. InfluTo zahlt Creator monatlich über Stripe Connect in 33 Ländern aus, sobald sie 20 $ verdient haben.
Bring Empfehlungscodes in deinen nächsten TestFlight-Build.
Ein Swift-Paket, ein Validierungsweg, eine rückerstattbare Einzahlung. 0 $ im Monat; 10 % nur auf Umsatz, den Creator bringen.
Kostenlos starten