From 4267f0338b6c788aecfb925a3b7da061b57879db Mon Sep 17 00:00:00 2001 From: Marcel Vojtkovszky Date: Fri, 18 Oct 2024 09:12:30 +0200 Subject: [PATCH 1/3] prepare next iteration --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49afefc..6653b60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # CHANGELOG +## 0.1.3 (TBD) + ## 0.1.2 (2024-10-18) * Better use of async context, `fetchAndSync()` significantly faster as a result. * Improve documentation and examples in README.md From 11d9993dbc0c641e88e96fe3a648a336f687656c Mon Sep 17 00:00:00 2001 From: Marcel Vojtkovszky Date: Mon, 28 Oct 2024 17:55:30 +0100 Subject: [PATCH 2/3] add verified transactions updated from outside the app to purchasedProductIds --- Sources/StoreKitHelper/PurchaseHelper.swift | 11 +++++++++-- Sources/StoreKitHelper/StoreKitCommunicator.swift | 7 ++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Sources/StoreKitHelper/PurchaseHelper.swift b/Sources/StoreKitHelper/PurchaseHelper.swift index 2dd1ff1..b92c208 100644 --- a/Sources/StoreKitHelper/PurchaseHelper.swift +++ b/Sources/StoreKitHelper/PurchaseHelper.swift @@ -42,8 +42,15 @@ public class PurchaseHelper: ObservableObject { self.storeKitCommunicator = StoreKitCommunicator(autoFinishTransactions: autoFinishTransactions) Task { - // result can be ignored, we just wanted to finish the transaction - let _ = await storeKitCommunicator.listenForTransactionUpdatesAsync() + // listen for updates outside of the app + for productId in await storeKitCommunicator.listenForTransactionUpdatesAsync() { + updateUI { [weak self] in + guard let self else { return } + if !self.purchasedProductIds.contains(productId) { + self.purchasedProductIds.append(productId) + } + } + } } } diff --git a/Sources/StoreKitHelper/StoreKitCommunicator.swift b/Sources/StoreKitHelper/StoreKitCommunicator.swift index 0ef8e75..aceaaa0 100644 --- a/Sources/StoreKitHelper/StoreKitCommunicator.swift +++ b/Sources/StoreKitHelper/StoreKitCommunicator.swift @@ -72,16 +72,17 @@ final internal class StoreKitCommunicator: Sendable { } } - func listenForTransactionUpdatesAsync() async -> String? { + func listenForTransactionUpdatesAsync() async -> [String] { + var verifiedProductIdsOutsideTheApp: [String] = [] for await result in Transaction.updates { if case .verified(let transaction) = result { print("PurchaseHelper transaction updated outside the app: \(transaction.productID)") if autoFinishTransactions { await transaction.finish() } - return transaction.productID + verifiedProductIdsOutsideTheApp.append(transaction.productID) } } - return nil + return verifiedProductIdsOutsideTheApp } } From 5859d89ec3e66bcf90f1490e50eb57a25ef5a70d Mon Sep 17 00:00:00 2001 From: Marcel Vojtkovszky Date: Thu, 31 Oct 2024 13:09:09 +0100 Subject: [PATCH 3/3] edit changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6653b60..c68887a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # CHANGELOG -## 0.1.3 (TBD) +## 0.1.3 (2024-10-31) +* Verified transactions updated from outside the app are now added to purchasedProductIds. ## 0.1.2 (2024-10-18) * Better use of async context, `fetchAndSync()` significantly faster as a result.