bizz84 / SwiftyStoreKit

Lightweight In App Purchases Swift framework for iOS 8.0+, tvOS 9.0+ and macOS 10.10+ ⛺
MIT License
6.55k stars 796 forks source link

Getting Promo Code IAP (not offer code) on the SKPaymentQueue using SwiftyStoreKit #714

Open adriandev78 opened 1 month ago

adriandev78 commented 1 month ago

Question

I'm trying to get Promo Codes Redeemed from the app store to work inside my iOS app. Please note that these are different from offer codes - which are used for subscriptions and work with presenting an UI.

After I generate a promo code from appstoreconnect the flow from a user perspective is:

  1. Go to App Store -> Profile
  2. Go to Redeem Gift Card or Code
  3. Input code
  4. Tap Open App
  5. My app opens but no IAP is triggered by SwiftyStoreKit.completeTransactions .

I'm using SwiftyStoreKit and in applicationDidFinishLaunching I've put the code:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // see notes below for the meaning of Atomic / Non-Atomic
    SwiftyStoreKit.completeTransactions(atomically: true) { purchases in
        for purchase in purchases {
            switch purchase.transaction.transactionState {
            case .purchased, .restored:
                if purchase.needsFinishTransaction {
                    // Deliver content from server, then:
                    SwiftyStoreKit.finishTransaction(purchase.transaction)
                }
                // Unlock content
            case .failed, .purchasing, .deferred:
                break // do nothing
            }
        }
    }
    return true
}

and handle the delivering functionality of the IAP before calling :

SwiftyStoreKit.finishTransaction(purchase.transaction)

But there seems there is no call to the SwiftyStoreKit.completeTransactions callback.

Isn't this the method that should get called to make redeeming promo codes work ?