Otwartoźródłowe SDK do integracji zakupów w aplikacji na iOS

Zaimplementuj zakupy w aplikacji w 30 minut.

Gotowy backend dla iOS zakupów w aplikacji

Integracja zakupów w aplikacji wymaga stworzenia infrastruktury backendowej i serwera dla zdarzeń subskrypcyjnych. Może to zająć setki godzin pracy i być trudne do utrzymania.
import StoreKit
class Store: ObservableObject {
    private var productIDs = ["stone"]
    @Published var products = [Product]()
    init() {
        Task {
            await requestProducts()
        }
    }  
    @MainActor
    func requestProducts() async {
        do {
            products = try await Product.products(for: productIDs)
        } catch {
            print(error)
    }
  }
}
Section(header: Text("To buy")) {
 }
ForEach(store.products, id: .id) {
  product in
    HStack {
      Text(product.displayName)
      Spacer()
      Button("(product.displayPrice)") {
    }
  }
}
@Published var purchasedNonConsumables = [Product]()
@MainActor
func purchase(_ product: Product) async throws -> Transaction ? {
  let result =
    try await product.purchase()
  switch result {
    case .success(.verified(let transaction)):
      purchasedNonConsumables.append(product)
      await transaction.finish()
      return transaction
    default:
      return nil
  }
}
Button("(product.displayPrice)") {
 Task {
  try await store.purchase(product)
  }
}
ProductView(
 icon: "❀",
 quantity: "(store.purchasedNonConsumables.count)"
 )
 func listenForTransactions() -> Task < Void, Error > {
  return Task.detached {
    for await result in Transaction.updates {
      switch result {
        case let.verified(transaction):
          guard
          let product = self.products.first(where: {
            $0.id == transaction.productID
          })
          else {
            continue
          }
          self.purchasedNonConsumables.append(product)
          await transaction.finish()
        default:
          continue
      }
    }
  }
}
var transacitonListener: Task<Void, Error>?
init() {
   transacitonListener = listenForTransactions()
   Task {
     await requestProducts()
 }
}
@MainActor
private func handle(transactionVerification result: VerificationResult <Transaction> ) async {
  switch result {
    case let.verified(transaction):
      guard
      let product = self.products.first(where: {
        $0.id == transaction.productID
      })
      else {
        return
      }
      self.purchasedNonConsumables.insert(product)
      await transaction.finish()
    default:
      return
  }
}
SDK Adapty umożliwia integrację subskrypcji w aplikacji w Twojej aplikacji iOS z naszą gotową infrastrukturą, która obsługuje wszystkie zdarzenia subskrypcyjne i oferuje funkcje zwiększające przychody.
// Your app's code
import Adapty
Adapty.activate("PUBLIC_SDK_KEY")
 
// Make a purchase, Adapty handles the rest
do {
	let purchasedInfo = try await Adapty.makePurchase(product)
	// successful purchase
} catch {
	// handle the error
}
Od integracji po konserwację - Adapty stworzono, aby ułatwić pracę z IAP.
Poproś o demo

Dlaczego warto wybrać SDK Adapty?

Poprawny stan subskrypcji w każdej chwili

Możesz być pewny, że zawsze uzyskasz poprawny stan subskrybenta na wszystkich platformach.

Weryfikacja paragonów po stronie serwera

Nie musisz się martwić o poprawność i bezpieczeństwo weryfikacji zakupów.

Obsługa wszystkich rodzajów stanów subskrypcji

Darmowe okresy próbne, ulepszenia, oferty promocyjne, dzielenie się z rodziną, odnawianie i więcej.

Platforma gotowa do przedsiębiorstw z krótkim cyklem wydania

>99,99% niezawodności SLA i regularne aktualizacje produktu.
Konfiguracja platform
Instalowanie SDK Adapty
Adapty.activate(
   "PUBLIC_SDK_KEY",
   customerUserId: "YOUR_USER_ID"
)
Przetwarzanie zdarzeń zakupowych

Szybka i łatwa integracja

Spędź tylko kilka godzin na integracji SDK Adapty w swojej aplikacji iOS, a my zajmiemy się resztą.

Tylko 5 metod SDK do zaimplementowania iOS zakupów w aplikacji

// Your app's code
import Adapty
  
Adapty.activate("PUBLIC_SDK_KEY", customerUserId: "YOUR_USER_ID")
 
 
 
 
 
 
 
// Your app's code
Adapty.getPaywall(placementId: "YOUR_PLACEMENT_ID", locale: "en") { result in
    switch result {
        case let .success(paywall):
            // the requested paywall
        case let .failure(error):
            // handle the error
    }
}
 
 
// Your app's code
Adapty.makePurchase(product: product) { result in
    switch result {
    case let .success(info):
      if info.profile.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive ?? false {
        // successful purchase
      }
    case let .failure(error):
        // handle the error
    }
}
// Your app's code
Adapty.getProfile { result in
    if let profile = try? result.get() {
        // check the access
    }

 
 
 
 
 
// Your app's code
Adapty.restorePurchases { [weak self] result in
    switch result {
        case let .success(profile):
            if info.profile.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive ?? false {
	            // successful access restore
            }
        case let .failure(error):
            // handle the error
    }
}
Wypróbuj za darmo

Ludzie z różnych branż zwracają się do Adapty, aby zwiększyć swoje przychody

Co zyskujesz z Adapty?

SDK Adapty oferuje ogromne możliwości zwiększania przychodów aplikacji

Analizy w czasie rzeczywistym dla twojej iOS Aplikacji

Polegaj na danych z 99,5% dokładnością dzięki App Store Connect.
Rozpocznij
App Icon Gravity
Gravity Fit
Zdrowie i fitness
„Przejrzyste i zaawansowane analityczne pulpity nawigacyjne pomagają nam podejmować decyzje szybciej, bez użycia dodatkowych narzędzi. To oszczędza nam dużo czasu i, co za tym idzie, pieniędzy.”
Ekaterina K,
PM w Gravity Fit
Accuracy Adapty Appstore
ABC testing

Testy A/B peyałłów

Znajdź najzyskowniejszy peyałł i zwiększ przychody swojej aplikacji.
Odkryj testy A/B
MentalGrowth
MentalGrowth
Aplikacja zdrowotna i wellness
„Szybka analityka Adapty i łatwa w uruchomieniu funkcja testów A/B pozwoliły nam szybko weryfikować hipotezy i osiągać doskonałe wyniki.”
Vadim Nemchenko,
Menadżer Produktu w MentalGrowth

Zdalna konfiguracja dla peyałłów

Zmień swój peyałł zdalnie bez konieczności ponownego wydania aplikacji.
Wypróbuj to teraz
Smitten
Smitten - Randki
Styl życia
„Nasz zespół ds. wzrostu i przychodów może szybko wdrażać i zarządzać peyałłami, ofertami produktów i testować poziomy cen w różnych rynkach.”
Kyle Smith,
Szef danych w Smitten Dating
Table Json Table Locale

Zaufanie do użyteczności i obsługi klienta

Na podstawie ponad 500 recenzji
G2 Award: Leader (EMEA), winter 2025
G2 Award: Leader (EMEA), winter 2025
G2 Award: Leader (EMEA), winter 2025
G2 Award: Leader (EMEA), winter 2025
G2 Award: Leader (EMEA), winter 2025