Guia passo a passo para implementar compras no aplicativo em um aplicativo Flutter para Android e iOS: código e dicas.
A implementação de compras no aplicativo (IAP) em um aplicativo Flutter para Android envolve o uso do pacote in_app_purchase, que fornece uma API simples e flexível para lidar com IAPs no iOS e no Android. O pacote usa as APIs nativas de compra no aplicativo em cada plataforma, para que possa lidar com assinaturas e compras únicas.
aqui está um guia passo a passo para implementar compras no aplicativo (IAP) em um aplicativo Flutter para Android, incluindo trechos de código para ajudar você a entender cada etapa:
Passo 1:
Adicione o pacote in_app_purchase ao seu arquivo pubspec.yaml.
dependencies: flutter: sdk: flutter in_app_purchase: ^3.1.4
Passo 2:
Configure seu aplicativo para IAP criando uma nova lista de produtos no Google Play Developer Console. Você precisará carregar o APK do seu aplicativo no console, bem como criar uma lista dos produtos (ou itens no aplicativo) que deseja vender. Certifique-se de ter o ID do produto pronto para as próximas etapas.
Passo 3:
Inicialize o plug-in IAP chamando InAppPurchaseConnection.enablePendingPurchases()
e
InAppPurchaseConnection.instance.isAvailable()
em sua função principal.
void main() { InAppPurchaseConnection.enablePendingPurchases(); runApp(MyApp()); }
Passo 4:
Recupere a lista de produtos disponíveis chamando InAppPurchaseConnection.instance.queryPastPurchases()
e a
InAppPurchaseConnection.instance.queryProductDetails().
Future<void> _retrieveAvailableItems() async { final QueryPurchaseDetailsResponse purchaseResponse = await InAppPurchaseConnection.instance .queryPastPurchases(); final QueryProductDetailsResponse productResponse = await InAppPurchaseConnection.instance. queryProductDetails(_productIds); availableItems = productResponse.productDetails; pastPurchases = purchaseResponse.pastPurchases; }
Passo 5:
Inicie uma compra chamando InAppPurchaseConnection.instance.buyNonConsumable()
ou InAppPurchaseConnection.instance.buySubscription()
e passando o ID do produto do item a ser comprado.
void _buyProduct(ProductDetails item) { InAppPurchaseConnection.instance. buyNonConsumable(productDetails: item); }
Passo 6:
Ouça o purchaseUpdatedStream para receber atualizações sobre o status da compra.
InAppPurchaseConnection.instance.purchaseUpdatedStream .listen((purchaseDetails) { // Handle purchase here });
Passo 7:
Depois que a compra for concluída, verifique se a compra é válida ou não ligando para VerifyPurchase(purchasedItem).
void _handlePurchase(PurchaseDetails purchase) { if (purchase.status == PurchaseStatus.purchased) { if (Platform.isIOS) { InAppPurchaseConnection.instance .completePurchase(purchase); } _verifyPurchase(purchase); } else { // Handle failed purchase } }
Passo 8:
Consuma a compra se ela não for consumível.
void _verifyPurchase(PurchaseDetails purchase) { InAppPurchaseConnection.instance .consumePurchase(purchase); }
É importante observar que, no Android, você também precisará configurar um servidor para lidar com o processo de verificação da compra, pois o pacote de compra no aplicativo fornece apenas o cliente
Diferença entre implementar compras no aplicativo no Flutter para Android e iOS:
A principal diferença entre implementar compras in-app no Flutter para Android e iOS é a forma como as compras são tratadas pela plataforma.
No Android, as compras no aplicativo são feitas pela Google Play Store, e o desenvolvedor precisa configurar seu próprio servidor para verificação da compra. O desenvolvedor pode usar o método Security.verifyPurchase() da biblioteca de faturamento do Google Play para verificar a compra no servidor.
Já no iOS, as compras in-app são realizadas pela App Store, e a verificação da compra é feita pela própria App Store. O desenvolvedor não precisa configurar seu próprio servidor para verificação de compra.
Outra diferença é que no iOS, o aplicativo deve usar a mesma conta da App Store da conta do desenvolvedor que criou o aplicativo para testar as compras no aplicativo.
Ambas as plataformas têm APIs semelhantes para implementar compras no aplicativo, mas você deve ter em mente as diferenças acima e configurar de acordo.