Açıklama Yok
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SubscriptionGroup.cs 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Linq;
  3. using UnityEngine;
  4. using UnityEngine.Purchasing;
  5. namespace Samples.Purchasing.AppleAppStore.UpgradeDowngradeSubscription
  6. {
  7. /// <summary>
  8. /// A subscription group is a list of subscriptions where a user can only be subscribed to a single subscription in the group at one time.
  9. /// The subscriptions in the group are ordered by their tier, meaning a user can upgrade or downgrade from one subscription to another in the group.
  10. /// </summary>
  11. public class SubscriptionGroup
  12. {
  13. IStoreController m_StoreController;
  14. IExtensionProvider m_ExtensionsProvider;
  15. string[] m_SubscriptionIds;
  16. public SubscriptionGroup(IStoreController storeController, IExtensionProvider extensionsProvider, params string[] subscriptionIds)
  17. {
  18. m_StoreController = storeController;
  19. m_ExtensionsProvider = extensionsProvider;
  20. m_SubscriptionIds = subscriptionIds;
  21. }
  22. public void BuySubscription(string newSubscriptionId)
  23. {
  24. m_StoreController.InitiatePurchase(newSubscriptionId);
  25. }
  26. public string CurrentSubscriptionId()
  27. {
  28. return m_SubscriptionIds.FirstOrDefault(IsSubscribedTo);
  29. }
  30. bool IsSubscribedTo(string subscriptionId)
  31. {
  32. var subscriptionProduct = m_StoreController.products.WithID(subscriptionId);
  33. return IsSubscribedTo(subscriptionProduct);
  34. }
  35. static bool IsSubscribedTo(Product subscription)
  36. {
  37. // If the product doesn't have a receipt, then it wasn't purchased and the user is therefore not subscribed.
  38. if (subscription?.receipt == null)
  39. {
  40. return false;
  41. }
  42. var subscriptionManager = new SubscriptionManager(subscription, null);
  43. var subscriptionInfo = subscriptionManager.getSubscriptionInfo();
  44. return subscriptionInfo.isSubscribed() == Result.True;
  45. }
  46. }
  47. }