This documentation will eventually live in the manual, but for the time being, here is some details about the SubscriptionManager class.
Unity IAP supports Product subscription information queries through the SubscriptionManager class. For example code, please review the IAPDemo.cs script included in the Unity IAP SDK (1.19+).
SubscriptionManager class methods
This class supports the Apple store and Google Play store. For Google Play, this class only supports Products purchased using IAP SDK 1.19+.
public SubscriptionInfo getSubscriptionInfo() Returns a SubscriptionInfo
object (see below)
SubscriptionInfo class methods
The SubscriptionInfo class is a container for a Product’s subscription-related information.
-
public string getProductId()
-
Returns a Product’s store ID
-
public DateTime getPurchaseDate()
-
Returns the Product’s purchase date.
-
For Apple, the purchase date is the date when the subscription was either purchased or renewed.
-
For Google, the purchase date is the date when the subscription was originally purchased.
-
public Result isSubscribed()
-
Returns a
Result
enum to indicate whether this Product is currently subscribed or not. -
Non-renewable Products in the Apple store return a
Result.Unsupported
value. -
Auto-renewable Products in the Apple store and subscription products in the Google Play store return a
Result.True
orResult.False
value. -
public Result isExpired()
-
Returns a Result enum to indicate whether this Product has expired or not.
-
Non-renewable Products in the Apple store return a
Result.Unsupported
value. -
Auto-renewable Products in the Apple store and subscription products in the Google Play store return a
Result.True
orResult.False
value. -
public Result isCancelled()
-
Returns a
Result
enum to indicate whether this Product has been cancelled. -
A cancelled subscription means the Product is currently subscribed, but will not renew on the next billing date.
-
Non-renewable Products in the Apple store return a
Result.Unsupported
value. -
Auto-renewable Products in the Apple store and subscription products in the Google Play store return a
Result.True
orResult.False
value. -
public Result isFreeTrial()
-
Returns a
Result
enum to indicate whether this Product is a free trial. -
Products in the Google Play store return Result.Unsupported if the application does not support version 6+ of the Android in-app billing API.
-
Non-renewable Products in the Apple store return a
Result.Unsupported
value. -
Auto-renewable Products in the Apple store and subscription products in the Google Play store return a
Result.True
orResult.False
value. -
public Result isAutoRenewing()
-
Returns a
Result
enum to indicate whether this Product is auto-renewable. -
Non-renewable Products in the Apple store return a
Result.Unsupported
value. -
Auto-renewable Products in the Apple store and subscription products in the Google Play store return a
Result.True
orResult.False
value. -
public TimeSpan getRemainingTime()
-
Returns a
TimeSpan
to indicate how much time remains until the next billing date. -
Products in the Google Play store return TimeSpan.MaxValue if the application does not support version 6+ of the Android in-app billing API.
-
``public Result isIntroductoryPricePeriod()`
-
Returns a
Result
enum to indicate whether this Product is within an introductory price period. -
Non-renewable Products in the Apple store return a
Result.Unsupported
value. -
Auto-renewable Products in the Apple store and subscription products in the Google Play store return a
Result.True
orResult.False
value. -
Products in the Google Play store return Result.Unsupported if the application does not support version 6+ of the Android in-app billing API.
-
`public TimeSpan getIntroductoryPricePeriod()``
-
Returns a
TimeSpan
to indicate how much time remains for the introductory price period. -
Subscription products with no introductory price period return
TimeSpan.Zero
. -
Products in the Apple store return TimeSpan.Zero if the application does not support iOS version 11.2+, macOS 10.13.2+, or tvOS 11.2+.
-
public long getIntroductoryPricePeriodCycles()
-
Returns the number of introductory price periods that can be applied to this Product.
-
Products in the Apple store return 0 if the application does not support iOS version 11.2+, macOS 10.13.2+, or tvOS 11.2+
-
public string getIntroductoryPrice()
-
Returns a string to indicate the introductory price of the Product.
-
Products with no introductory price return a
"not available"
value. -
Apple store Products with an introductory price return a value formatted as
“0.99USD”
. -
Google Play Products with an introductory price return a value formatted as
“$0.99”
. -
Products in the Apple store return
“not available”
if the application does not support iOS version 11.2+, macOS 10.13.2+, or tvOS 11.2+. -
public DateTime getExpireDate()
-
Returns the date of the Product’s next auto-renew or expiration (for a cancelled auto-renewing subscription).
-
Products in the Google Play store return TimeSpan.MaxValue if the application does not support version 6+ of the Android in-app billing API
Result
enumeration
Properties
True
indicate a bool value trueFalse
indicate a bool value falseUnsupported
indicate this is a unsupported property for this subscription product
For more complete example code, please view the IAPDemo.cs within Plugins/Purchasing/script.
#if SUBSCRIPTION_MANAGER
Dictionary<string, string> dict = m_AppleExtensions.GetIntroductoryPriceDictionary();
#endif
foreach (Product item in controller.products.all)
{
#if SUBSCRIPTION_MANAGER
// this is the usage of SubscriptionManager class
if (item.receipt != null) {
if (item.definition.type == ProductType.Subscription) {
string intro_json = (dict == null || !dict.ContainsKey(item.definition.storeSpecificId)) ? null : dict[item.definition.storeSpecificId];
SubscriptionManager p = new SubscriptionManager(item, intro_json);
SubscriptionInfo info = p.getSubscriptionInfo();
Debug.Log(info.getProductId());
Debug.Log(info.getPurchaseDate());
Debug.Log(info.getExpireDate());
Debug.Log(info.isSubscribed());
Debug.Log(info.isExpired());
Debug.Log(info.isCancelled());
Debug.Log(info.isFreeTrial());
Debug.Log(info.isAutoRenewing());
Debug.Log(info.getRemainingTime());
Debug.Log(info.isIntroductoryPricePeriod());
Debug.Log(info.getIntroductoryPrice());
Debug.Log(info.getIntroductoryPricePeriod());
Debug.Log(info.getIntroductoryPricePeriodCycles());
} else {
Debug.Log("the product is not a subscription product");
}
} else {
Debug.Log("the product should have a valid receipt");
}
#endif
}