Skip to content
This repository has been archived by the owner on Mar 4, 2020. It is now read-only.

kMKStoreKitProductPurchasedNotification doesn't contain the transactionState. It's required to determine whether the product is purchases or restored. #247

Open
funnel20 opened this issue Sep 21, 2015 · 2 comments

Comments

@funnel20
Copy link

When calling [[MKStoreKit sharedKit] restorePurchases] to restore earlier purchases, I was under the impression that only kMKStoreKitRestoredPurchasesNotification would be fired.
However, for each product kMKStoreKitProductPurchasedNotification is fired too (before kMKStoreKitRestoredPurchasesNotification).
The current notification object is only 'transaction.payment.productIdentifier'.
So there is no way in kMKStoreKitProductPurchasedNotification to determine whether the product is purchased or restored.
For several purposes I want to know that.

I have solved this by using the complete SKPaymentTransaction as object to kMKStoreKitProductPurchasedNotification:

[[NSNotificationCenter defaultCenter] postNotificationName:kMKStoreKitProductPurchasedNotification
                                                            object:transaction];

Instead of:

[[NSNotificationCenter defaultCenter] postNotificationName:kMKStoreKitProductPurchasedNotification
                                                            object:transaction.payment.productIdentifier];

SKPaymentTransaction contains the property "transactionState".

When receiving the notification in a class, the transaction ID can be retrieved via:

SKPaymentTransaction *transaction = [notification object];
NSString *id = transaction.payment.productIdentifier;

And the transactionState via:

SKPaymentTransactionState transactionState = transaction.transactionState;

The latter can be compared to SKPaymentTransactionStatePurchased or SKPaymentTransactionStateRestored.

@warpling
Copy link

Nice addition @funnel20. I'm adding this to my branch.

@tjaved
Copy link

tjaved commented Nov 3, 2015

Shifting to this in my branch too.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants