Skip to content

Release 1.0.3

Choose a tag to compare

@Ramiz69 Ramiz69 released this 30 Aug 15:49
· 7 commits to main since this release

🚀 What’s New

  • Entitlement & Subscription helpers
    • PurchasesManager.hasEntitlement(for:)
    • PurchasesManager.entitlementProductIDs()
    • PurchasesManager.activeSubscriptions()
    • PurchasesManager.activeSubscription(inGroup:)
  • StoreProduct
    • Added subscriptionGroupID (for auto-renewable subs).
  • Docs
    • Expanded DocC with usage examples for entitlements and groups.
    • Updated Getting Started and Overview.

🧠 Behavior Notes

  • requestProducts(includingCache: true) returns cached products instantly and refreshes entitlements in the background so isPurchased stays accurate.
  • restore() now performs a full entitlement refresh.
  • isPurchased on StoreProduct mirrors Transaction.currentEntitlements.

🧩 API Surface

// PurchasesProtocol / PurchasesManager
func hasEntitlement(for productID: String) async -> Bool
func entitlementProductIDs() async -> Set<String>
func activeSubscriptions() async -> [StoreProduct]
func activeSubscription(inGroup groupID: String) async -> StoreProduct?

// StoreProduct
public let subscriptionGroupID: String?

✨ Examples

// Gate a feature:
let hasPro = await PurchasesManager.shared.hasEntitlement(for: "com.myapp.pro")

// List active subs:
let subscriptions = await PurchasesManager.shared.activeSubscriptions()

// Pick active sub in a group:
if let active = await PurchasesManager.shared.activeSubscription(inGroup: "com.myapp.subscriptions.premium") {
    print("Active plan:", active.displayName)
}

📦 Installation

.package(url: "https://github.com/Ramiz69/PurchaseKit.git", from: "1.0.3")

📚 Documentation