Um SDK de código aberto para integrar compras no aplicativo em Flutter

Implemente compras no aplicativo em 30 minutos.

Back end pronto para Flutter compras in-app

Integrar compras in-app requer a criação de uma infraestrutura de backend e servidor para eventos de assinatura. Isso pode levar centenas de horas de trabalho e ser desafiador de manter.
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
  }
}
O SDK Adapty permite que você integre assinaturas in-app em seu aplicativo iOS com nossa infraestrutura pronta, que lida com todos os eventos de assinatura e oferece recursos para aumentar a receita.
// 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
}
Da integração à manutenção – a Adapty foi criada para facilitar o trabalho com IAP.
Solicitar uma demonstração

Por que escolher o SDK Adapty?

Estado de assinatura correto a qualquer momento

Fique tranquilo, você sempre obterá o estado correto do assinante em todas as plataformas.

Validação de recibo do lado do servidor

Não precisa se preocupar com a correção e segurança da validação de compras.

Tratando todos os tipos de estados de assinatura

Testes gratuitos, upgrades, ofertas promocionais, compartilhamento familiar, renovações e mais.

Plataforma pronta para empresas com um ciclo de lançamento curto

>99,99% de confiabilidade SLA e atualizações regulares do produto.
Configurando plataformas
Instalando o SDK Adapty
Adapty.activate(
   "PUBLIC_SDK_KEY",
   customerUserId: "YOUR_USER_ID"
)
Processando eventos de compra

Integração rápida e fácil

Gaste apenas algumas horas para integrar o SDK Adapty em seu aplicativo iOS e nós cuidaremos do resto.

Apenas 5 métodos de SDK a serem implementados para Flutter compras in-app

// 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) {
}
 
 
 
Experimente gratuitamente

Pessoas de todos os tipos de negócios recorrem à Adapty para aumentar sua receita

O que você ganha com a Adapty?

O SDK Adapty oferece enormes possibilidades para aumentar a receita do aplicativo.

Análise em tempo real para o seu Flutter App

Confie nos dados com 99,5% de precisão com o App Store Connect.
Começar agora
App Icon Gravity
Gravity Fit
Saúde & Fitness
“Painéis analíticos transparentes e avançados nos ajudam a tomar decisões mais rápido sem usar ferramentas adicionais. Isso nos economiza muito tempo e, portanto, dinheiro.”
Ekaterina K,
PM na Gravity Fit
Accuracy Adapty Appstore
ABC testing

Teste A/B de paywall

Encontre o paywall mais lucrativo e aumente a receita do seu aplicativo.
Explore o teste A/B
MentalGrowth
MentalGrowth
Aplicativo de Saúde & Bem-estar
“A rápida análise da Adapty e a fácil implementação do recurso de teste A/B nos permitiram validar hipóteses rapidamente e obter ótimos resultados.”
Vadim Nemchenko,
Gerente de Produto na MentalGrowth

Configuração remota para paywalls

Altere seu paywall remotamente sem precisar re-lançar o aplicativo.
Experimente agora
Smitten
Smitten - Dating
Estilo de vida
“Nossa equipe de crescimento e receita consegue implementar e gerenciar rapidamente paywalls, ofertas de produtos e testar níveis de preços em muitos mercados diferentes.”
Kyle Smith,
Chefe de dados na Smitten Dating
Table Json Table Locale

Confiança na usabilidade e no serviço ao cliente

Com base em mais de 500 avaliações
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