SKTransactionObserverWrapper
// SKTransactionObserverWrapperを継承 class _MyTransactionObserver extends SKTransactionObserverWrapper { @override void paymentQueueRestoreCompletedTransactionsFinished() {} @override void removedTransactions({ required List<SKPaymentTransactionWrapper> transactions, }) {} @override void restoreCompletedTransactionsFailed({required SKError error}) {} @override bool shouldAddStorePayment({ required SKPaymentWrapper payment, required SKProductWrapper product, }) { return true; } @override void updatedTransactions({ required List<SKPaymentTransactionWrapper> transactions, }) { } }
して
final myObserver = _MyTransactionObserver(); SKPaymentQueueWrapper().setTransactionObserver( myObserver, );
StreamSubscription<List<PurchaseDetails>>? _subscription;
_subscription = InAppPurchase.instance.purchaseStream.listen( (purchaseDetailsList) { for (final purchase in purchaseDetailsList) { if (purchase.status == PurchaseStatus.canceled) { // 手動キャンセルもあり } } }, onDone: () { }, onError: (dynamic error) { }, // cancelOnErrorがtrueに設定されている場合、エラーが発生したときにリッスンが自動的にキャンセルされます。 // false(デフォルト)の場合、エラーが発生してもリッスンが継続されます。 // cancelOnError: true, )