StoreKit für Swift: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist StoreKit und wofür wird es benötigt?

StoreKit ist ein integriertes Framework von Apple, das für die Implementierung von In-App-Käufen und Abonnements in Apps für iOS, macOS, watchOS und tvOS entwickelt wurde. Es bietet Entwicklern eine einheitliche Schnittstelle zur Interaktion mit dem App Store: Produktabfragen, Transaktionsverarbeitung, Zugriffsprüfung und Abonnementverwaltung.

Die Hauptaufgaben, die StoreKit löst:

  • Monetarisierung — Verkauf digitaler Güter (Premium-Zugang, virtuelle Währung, Inhalte).
  • Abonnementverwaltung — automatische Verlängerungen, Status, Testphasen.
  • Sicherheit — Zahlungsabwicklung über den App Store ohne Weitergabe von Bankdaten an den Entwickler.
  • Kaufwiederherstellung — Benutzer können Käufe auf ein anderes Gerät übertragen.

Wichtig zu verstehen: StoreKit ist keine externe Bibliothek, sondern Teil des Xcode SDK. Es muss nicht separat installiert werden, aber es muss in App Store Connect konfiguriert und dem Projekt hinzugefügt werden.

Einrichtung und Konfiguration

Da StoreKit ein System-Framework ist, beschränkt sich die Installation auf das Einbinden in Ihr Xcode-Projekt:

  1. Öffnen Sie Ihr Projekt in Xcode.
  2. Wählen Sie das Target (Ihre App) → Tab "General".
  3. Scrollen Sie zum Abschnitt "Frameworks, Libraries, and Embedded Content".
  4. Klicken Sie auf "+" und wählen Sie StoreKit.framework.
  5. Stellen Sie sicher, dass der Status "Embed" auf "Do Not Embed" gesetzt ist.

Importieren Sie anschließend das Framework in den benötigten Dateien:

import StoreKit

Konfigurieren Sie außerdem unbedingt Ihre Produkte in App Store Connect:

  • Erstellen Sie Produkt-IDs (z. B. com.example.premium).
  • Legen Sie Preis, Lokalisierung und Typ fest (verbrauchbar/nicht verbrauchbar/Abonnement).
  • Richten Sie bei Abonnements Gruppen und Testphasen ein.

Schnellstart mit Codebeispiel

Ein minimales funktionierendes Beispiel für die Produktabfrage und den Kauf:

import StoreKit

class StoreManager: NSObject, SKProductsRequestDelegate, SKPaymentTransactionObserver {
    
    static let shared = StoreManager()
    private var products: [SKProduct] = []
    
    override private init() {
        super.init()
        SKPaymentQueue.default().add(self)
    }
    
    // 1. Produkte anfragen
    func fetchProducts(productIDs: Set<String>) {
        let request = SKProductsRequest(productIdentifiers: productIDs)
        request.delegate = self
        request.start()
    }
    
    // 2. Delegate für Produktempfang
    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
        self.products = response.products
        for product in products {
            print("Produkt gefunden: \(product.localizedTitle) — \(product.price)")
        }
    }
    
    // 3. Kauf
    func purchase(product: SKProduct) {
        let payment = SKPayment(product: product)
        SKPaymentQueue.default().add(payment)
    }
    
    // 4. Transaktionsverarbeitung
    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        for transaction in transactions {
            switch transaction.transactionState {
            case .purchased:
                // Inhalt freischalten
                print("Kauf erfolgreich: \(transaction.payment.productIdentifier)")
                SKPaymentQueue.default().finishTransaction(transaction)
            case .failed:
                if let error = transaction.error {
                    print("Kauffehler: \(error.localizedDescription)")
                }
                SKPaymentQueue.default().finishTransaction(transaction)
            case .restored:
                print("Kauf wiederhergestellt")
                SKPaymentQueue.default().finishTransaction(transaction)                    

Empfehlungen