Открытый SDK для интеграции покупок в приложении на Flutter

Реализуйте покупки в приложении за 30 минут.

Готовый бэкенд для Flutter покупок в приложении

Интеграция покупок в приложении требует создания бэкенд-инфраструктуры и сервера для событий подписки. Это может занять сотни часов работы и быть сложно поддерживать.
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 позволяет интегрировать подписки в приложении в ваше iOS приложение с нашей готовой инфраструктурой, которая обрабатывает все события подписки и предлагает функции для увеличения дохода.
// Your app's code
import 'package:adapty_flutter/adapty_flutter.dart';
Adapty().activate();
 
// Make a purchase, Adapty handles the rest
try {
	final profile = await Adapty().makePurchase(product: product);
	// successful purchase
} on AdaptyError catch (adaptyError) {
	// handle the error
} catch (error) {
	// handle another errors
}
От интеграции до обслуживания – Adapty создан для упрощения работы с IAP.
Запросить демонстрацию

Почему стоит выбрать SDK Adapty?

Корректное состояние подписки в любой момент

Будьте уверены, что вы всегда получите корректное состояние подписчика на всех платформах.

Валидация чеков на серверной стороне

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

Обработка всех видов состояний подписок

Бесплатные пробные версии, обновления, промо-оферы, семейный доступ, продления и многое другое.

Платформа, готовая для предприятий, с коротким циклом релиза

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

Быстрая и простая интеграция

Потратьте всего пару часов на интеграцию SDK Adapty в ваше iOS приложение, а мы позаботимся об остальном.

Всего 5 методов SDK для реализации Flutter покупок в приложении

// Your app's code
try {
    final profile = await Adapty().makePurchase(product: product);
    // successful purchase
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}
 
 
// Your app's code
try {
    final profile = await Adapty().restorePurchases();
    // check the access level
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}
 
 
// Your app's code
try {
    await Adapty().identify(customerUserId);
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}
 
 
 
// Your app's code
final builder = AdaptyProfileParametersBuilder()
  ..("Profile_Parameters")
 
try {
    await Adapty().updateProfile(builder.build());
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}
// Your app's code
try {
  await Adapty().updateAttribution("<attribution>", source: "<source>", networkUserId: "<networkUserId>");
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
}
 
 
 
Попробовать бесплатно

Люди из самых разных бизнесов обращаются к Adapty, чтобы увеличить свои доходы

Cem Ortabas, Co-founder and CEO of HubX
«Миграция с RevenueCat была не легким решением для нас. Мы выбрали Adapty, потому что верим, что они - лучший партнер для нашего роста. Оглядываясь назад, это было правильное решение. Несмотря на некоторые сложности, команда Adapty всегда была рядом, чтобы помочь нам во время миграции и после, и их поддержка на высшем уровне. Я рекомендую Adapty как надежного партнера.»
Джем Ортабаш
Соучредитель и генеральный директор, HubX
HUBX
Chris Bick, Founder and CEO of Bickster
«Мы работаем с Adapty с 2021 года, и я не мог бы быть более счастливым от этого. Мы пробовали другие платформы управления подписками в прошлом, так что могу сравнить. Adapty представила множество функций на протяжении лет и постоянно помогала нам расти. У них лучшие аналитические инструменты на рынке и все интеграции, о которых вы можете подумать. Если вы хотите увеличить доход вашего приложения, я определенно рекомендую Adapty.»
Крис Бик
Основатель и генеральный директор, Bickster
Bickster
Yalçın Özdemir, Founder & CEO of AppNation
«Мы выбрали Adapty за мощные возможности A/B тестирования пейволлов, которые помогли нам эффективно оптимизировать нашу стратегию монетизации. Удобная платформа, гибкое ценообразование и исключительная поддержка клиентов делают Adapty превосходным выбором по сравнению с конкурентами.»
Ялчын Оздемир
Основатель и генеральный директор, AppNation
AppNation
Kyle Smith, Head of data at Smitten Dating
«Платформа Adapty позволяет неразработчикам легко создавать и управлять A/B тестами, пейволлами, ассортиментом продуктов и ценовой структурой. У них есть отличный внешний API, который облегчает передачу связанных событий в другие аналитические инструменты, такие как Amplitude и Mixpanel.»
Кайл Смит
Руководитель отдела данных в Smitten Dating
Smitten
Roi Mulia, Founder & CEO of SocialKit
«Мы протестировали более трехсот пейволлов за четыре месяца. Adapty позволяет тестировать практически любой элемент пейволла, и мы воспользовались этим. Мы протестировали всё: продукты, текст заголовка, кнопки CTA, изображения, видео и т.д. Благодаря A/B тестированию Adapty, мы смогли удвоить наш месячный доход. Я не был уверен, что один инструмент может оказать такое влияние, но я стал свидетелем этого сам.»
Рой Мулия
Основатель и генеральный директор, SocialKit
SocialKit

Что вы получите с Adapty?

SDK Adapty предоставляет огромные возможности для увеличения дохода приложения

Аналитика в реальном времени для вашего Flutter приложения

Полагайтесь на данные с 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