I am testing auto renewing subscriptions for a macOS program in Xcode with a local Storekit file.
I have renewals set to occur every minute for testing.
I quit the app, and watch renewals appear in the Debug transaction manager window. Each is marked unfinished.
When I start the app, I call a function that is supposed to get unfinished transactions and finish them. In one of those "I swore it worked the other day", I am now finding it isn't working. The unfinished transaction remain marked as unfinished.
func getUnfinished() async {
for await verificationResult in Transaction.unfinished {
guard case .verified(let transaction) = verificationResult else {
continue
}
await transaction.finish()
}
}
If I add an AppStore.sync() right before looping on Transaction.unfinished, it works (i.e., cleans up unfinished transactions), but I get an alert I have to click through.
do {
try await AppStore.sync()
} catch {
print("DEBUG UNFINISHED: AppStore.sync() failed: \(error)")
}
Any idea why Transaction.unfinished isn't fetching unfinished transactions for me (without the AppStore.sync)?