Відкритий SDK для інтеграції покупок в застосунку на Android

Реалізуйте покупки в застосунку за 30 хвилин.

Готовий до використання бекенд для Android покупок у застосунках

Інтеграція покупок у застосунках вимагає створення бекенд-інфраструктури та сервера для подій підписки. Це може зайняти сотні годин роботи та бути складним для утримання.
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
  }
}
Adapty SDK дозволяє вам інтегрувати підписки в застосунках у вашому iOS застосунку за допомогою нашої готової інфраструктури, яка обробляє всі події підписки та пропонує можливості для росту доходу.
// Your app's code
Adapty.activate(this, "YOUR_APP_KEY")
 
// Make a purchase, Adapty handles the rest
Adapty.makePurchase(activity, product) { result ->
	when (result) {
		is AdaptyResult.Success -> {
			// successful purchase
		}
		is AdaptyResult.Error -> {
			// handle the error
		}
	}
}
Від інтеграції до обслуговування – Adapty створено, щоб спростити роботу з IAP.
Запросити демонстрацію

Чому обрати Adapty SDK?

Правильний стан підписки в будь-який момент

Будьте впевнені, що ви завжди отримаєте правильний стан підписника на всіх платформах.

Валіднація чеку на сервері

Не потрібно турбуватися про правильність та безпеку валідації покупок.

Обробка всіх видів станів підписки

Безкоштовні випробування, оновлення, промо-пропозиції, сімейний доступ, продовження та інше.

Платформа готова до роботи із підприємствами з коротким циклом випуску

>99.99% надійності SLA та регулярні оновлення продукту.
Налаштування платформ
Встановлення Adapty SDK
Adapty.activate(
   "PUBLIC_SDK_KEY",
   customerUserId: "YOUR_USER_ID"
)
Обробка подій покупки

Швидка та легка інтеграція

Потратьте лише кілька годин на інтеграцію Adapty SDK у вашому iOS застосунку, а ми подбаємо про усе інше.

Просто 5 методів SDK для реалізації Android покупок у застосунках

Adapty.makePurchase(activity, product) { result ->
    when (result) {
        is AdaptyResult.Success -> {
            val info = result.value
            //NOTE: info is null in case of cross-grade with DEFERRED proration mode
            val profile = info?.profile
 
            if (profile?.accessLevels?.get("YOUR_ACCESS_LEVEL")?.isActive == true) {
                // grant access to premium features
            }
        }
        is AdaptyResult.Error -> {
            val error = result.error
            // handle the error
        }
    }
}
// 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
    }
}
&nbsp
// Your app's code
Adapty.identify("YOUR_USER_ID") { error ->
    if (error == null) {
        // successful identify
    }
}
 
 
 
 
 
 
// Your app's code
val builder = AdaptyProfileParameters.Builder()
    .with("Profile_Parameters")
 
Adapty.updateProfile(builder.build()) { error ->
    if (error != null) {
        // handle the error
    }
}
 
 
 
// Your app's code
Adapty.updateAttribution(attribution, AdaptyAttributionSource.CUSTOM) { error ->
    if (error != null) {
        //handle error
    }
}
 
 
 
 
 
 
Спробуйте безкоштовно

Люди з усіх видів бізнесу звертаються до Adapty, щоб збільшити свій дохід

Що ви отримуєте з Adapty?

Adapty SDK забезпечує величезні можливості для зростання доходу застосунку

Аналітика в реальному часі для вашого Android Застосунку

Покладайтеся на дані з точністю 99.5% з App Store Connect.
Почати
App Icon Gravity
Gravity Fit
Здоров'я та фітнес
“Прозорі та розширені аналітичні панелі допомагають нам приймати рішення швидше без використання додаткових інструментів. Це економить нам багато часу і, отже, грошей.”
Єкатерина К,
PM у Gravity Fit
Accuracy Adapty Appstore
ABC testing

A/B тестування пейволів

Знайдіть найбільш прибутковий пейвол та збільшіть доходи вашого застосунку.
Досліджуйте A/B тестування
MentalGrowth
MentalGrowth
Додаток про здоров'я та добробут
“Швидка аналітика Adapty та легка у запуску функція A/B тестування дозволили нам швидко перевіряти гіпотези та досягати чудових результатів.”
Вадим Нємченко,
Продуктовий менеджер у MentalGrowth

Віддалене налаштування для пейволів

Змінюйте свій пейвол віддалено, не перевипускаючи застосунок.
Спробуйте це зараз
Smitten
Smitten - Знайомства
Стиль життя
“Наша команда зростання та доходу може швидко впроваджувати та управляти пейволами, продуктовими пропозиціями та тестувати цінові рівні в багатьох різних ринках.”
Кайл Сміт,
Керівник даних у Smitten Dating
Table Json Table Locale

Нам довіряють за зручність та якісну підтримку клієнтів

На основі 500+ відгуків
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

Шукаєте SDK для інших платформ?