Provides in-app purchase functionality. More...
#include <juce_InAppPurchases.h>
Classes | |
struct | Download |
iOS only: represents in-app purchase download. More... | |
struct | Listener |
Represents an object that gets notified about events such as product info returned or product purchase finished. More... | |
struct | Product |
Represents a product available in the store. More... | |
struct | Purchase |
Represents a purchase of a product in the store. More... | |
Public Member Functions | |
bool | isInAppPurchasesSupported () const |
Checks whether in-app purchases is supported on current platform. | |
void | getProductsInformation (const StringArray &productIdentifiers) |
Asynchronously requests information for products with given ids. | |
void | purchaseProduct (const String &productIdentifier, const String &upgradeOrDowngradeFromSubscriptionWithProductIdentifier={}, bool creditForUnusedSubscription=true) |
Asynchronously requests to buy a product with given id. | |
void | restoreProductsBoughtList (bool includeDownloadInfo, const juce::String &subscriptionsSharedSecret={}) |
Asynchronously asks about a list of products that a user has already bought. | |
void | consumePurchase (const String &productIdentifier, const String &purchaseToken={}) |
Android only: asynchronously sends a request to mark a purchase with given identifier as consumed. | |
void | addListener (Listener *) |
Adds a listener. | |
void | removeListener (Listener *) |
Removes a listener. | |
void | startDownloads (const Array< Download * > &downloads) |
iOS only: Starts downloads of hosted content from the store. | |
void | pauseDownloads (const Array< Download * > &downloads) |
iOS only: Pauses downloads of hosted content from the store. | |
void | resumeDownloads (const Array< Download * > &downloads) |
iOS only: Resumes downloads of hosted content from the store. | |
void | cancelDownloads (const Array< Download * > &downloads) |
iOS only: Cancels downloads of hosted content from the store. | |
Provides in-app purchase functionality.
Your app should create a single instance of this class, and on iOS it should be created as soon as your app starts. This is because on application startup any previously pending transactions will be resumed.
Once an InAppPurchases object is created, call addListener() to attach listeners.
bool InAppPurchases::isInAppPurchasesSupported | ( | ) | const |
Checks whether in-app purchases is supported on current platform.
On iOS this always returns true.
void InAppPurchases::getProductsInformation | ( | const StringArray & | productIdentifiers | ) |
Asynchronously requests information for products with given ids.
Upon completion, for each enquired product there is going to be a corresponding Product object. If there is no information available for the given product identifier, it will be ignored.
void InAppPurchases::purchaseProduct | ( | const String & | productIdentifier, |
const String & | upgradeOrDowngradeFromSubscriptionWithProductIdentifier = {}, | ||
bool | creditForUnusedSubscription = true ) |
Asynchronously requests to buy a product with given id.
productIdentifier | The product identifier. |
upgradeOrDowngradeFromSubscriptionWithProductIdentifier | (Android only) specifies the subscription that will be replaced by the one being purchased now. Used only when buying a subscription that is an upgrade or downgrade from another. |
creditForUnusedSubscription | (Android only) controls whether a user should be credited for any unused subscription time on the product that is being upgraded or downgraded. |
void InAppPurchases::restoreProductsBoughtList | ( | bool | includeDownloadInfo, |
const juce::String & | subscriptionsSharedSecret = {} ) |
Asynchronously asks about a list of products that a user has already bought.
Upon completion, Listener::purchasesListRestored() callback will be invoked. The user may be prompted to login first.
includeDownloadInfo | (iOS only) if true, then after restoration is successful, the downloads array passed to Listener::purchasesListReceived() callback will contain all the download objects corresponding with the purchase. In the opposite case, the downloads array will be empty. |
subscriptionsSharedSecret | (iOS only) required when not including download information and when there are auto-renewable subscription set up with this app. Refer to In-App-Purchase settings in the store. |
void InAppPurchases::consumePurchase | ( | const String & | productIdentifier, |
const String & | purchaseToken = {} ) |
Android only: asynchronously sends a request to mark a purchase with given identifier as consumed.
To consume a product, provide product identifier as well as a purchase token that was generated when the product was purchased. The purchase token can also be retrieved by using getProductsInformation(). In general if it is available on hand, it is better to use it, because otherwise another async request will be sent to the store, to first retrieve the token.
After successful consumption, a product will no longer be returned in getProductsBought() and it will be available for purchase.
On iOS consumption happens automatically. If the product was set as consumable, this function is a no-op.
void InAppPurchases::addListener | ( | Listener * | ) |
Adds a listener.
void InAppPurchases::removeListener | ( | Listener * | ) |
Removes a listener.
iOS only: Starts downloads of hosted content from the store.
iOS only: Pauses downloads of hosted content from the store.
iOS only: Resumes downloads of hosted content from the store.
iOS only: Cancels downloads of hosted content from the store.