Release 1.0.3
🚀 What’s New
- Entitlement & Subscription helpers
PurchasesManager.hasEntitlement(for:)
PurchasesManager.entitlementProductIDs()
PurchasesManager.activeSubscriptions()
PurchasesManager.activeSubscription(inGroup:)
- StoreProduct
- Added
subscriptionGroupID
(for auto-renewable subs).
- Added
- 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 soisPurchased
stays accurate.restore()
now performs a full entitlement refresh.isPurchased
onStoreProduct
mirrorsTransaction.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")