StoreKit 2 for iOS
Bring native in-app purchase power to your Unity iOS app using Apple’s StoreKit 2 framework. This plugin bridges Unity and Swift, giving you access to modern StoreKit 2 APIs with native performance, rich metadata, and full transaction lifecycle control.
Features
📦 Product Fetching – Retrieve full App Store metadata for your in-app purchases and subscriptions.
💰 Native Purchasing – Perform purchases using StoreKit 2 with async/await or callbacks.
🔄 Transaction Updates – Listen for real-time transaction changes via Transaction.updates stream.
🧾 Transaction History – Access current entitlements, full purchase history, and unfinished transactions.
📆 Subscription Management – Track subscription state, renewal info, grace period, and win-back offers.
🎁 Intro & WinBack Offers – Detect introductory eligibility and read active win-back offers. Signed promotional offers are not supported.
🆔 App Account Token – Automatically generated and stored in Keychain; sent with every purchase.
💸 Refund Sheet – Present native refund request UI with minimal setup.
⚙️ Native Settings Access – Open native iOS subscription management screen.
🚀 Async + Callbacks – Every method is available via Task<T> and classic callback style.
🧩 Clean JSON Models – All core models (Transaction, Product, etc.) are fully serializable.
🛡️ Detailed Errors – Native SKError codes are mapped to string identifiers like SKErrorPaymentCancelled.
📜 Legacy Support – Access StoreKit 1 receipt for backend validation if needed.
🔗 API Fidelity – designed to mirror Apple’s native StoreKit 2 behavior as closely as possible. Expect familiar concepts, naming, and flow — just with a Unity-friendly API.
Not Implemented (Yet)
🚫 Promotional Offers with signature (e.g., discountId + signature)
🚫 subscription.status directly from Product – not supported. You can only retrieve subscription status using a Transaction (transaction.subscriptionStatus).
Platform Support
✅ iOS 15.0+
✅ iPadOS 15.0+