万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    iOS課金2種類??

    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,
        )