Facebook
From trieu, 2 Weeks ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 118
  1. using BravestarsSDK;
  2. using System;
  3. using UnityEngine;
  4. using UnityEngine.Purchasing;
  5. using UnityEngine.Purchasing.Extension;
  6. using UnityEngine.UI;
  7.  
  8. public class IAPServices : MonoBehaviour, IStoreListener
  9. {
  10. #if UNITY_ANDROID||UNITY_EDITOR
  11.     string removeAds1 = "com.bravestars.amaze.flag.coloring.removeads.1";
  12.     string removeAds2 = "com.bravestars.amaze.flag.coloring.removeads.2";
  13.     string removeAds3 = "com.bravestars.amaze.flag.coloring.removeads.3";
  14. #endif
  15. #if UNITY_IOS
  16.     string removeAds1 = "com.bravestars.amaze.flag.coloring.removeads.1";
  17.     string removeAds2 = "com.bravestars.amaze.flag.coloring.removeads.2";
  18.     string removeAds3 = "com.bravestars.amaze.flag.coloring.removeads.3";
  19. #endif
  20.     IStoreController _storeController;
  21.     IExtensionProvider _storeExtensionProvider;
  22.     public static IAPServices Instance;
  23.  
  24.     void Awake()
  25.     {
  26.         //if (Application.platform!=RuntimePlatform.IPhonePlayer)
  27.         //{
  28.  
  29.         //}
  30.         Instance = this;
  31.         Debug.LogWarning("siuuuu");
  32.     }
  33.  
  34.     public void OnPurchaseComplete(Product product)
  35.     {
  36.         if (product.definition.id == removeAds1 || product.definition.id == removeAds2 || product.definition.id == removeAds3)
  37.         {
  38.             Debug.Log("iap: remove success!!");
  39.             UserData.Instance.isBoughtRemoveAds = true;
  40.             MediationManager.IsSkipResumeAds = true;
  41.             MediationManager.IsStopResume = false;
  42.  
  43.             BS_Data.MediationEnableAd = true;
  44.             UserData.Instance.HideElementAds();
  45.             UIGameplayController.Instance.OffButtonRemoveAds();
  46.         }
  47.     }
  48.  
  49.     public void OnPurchaseFailed(Product product, PurchaseFailureReason failReason)
  50.     {
  51.         Debug.LogWarning("iap: " + product.definition.id + " fail because " + failReason);
  52. #if UNITY_IOS||UNITY_EDITOR
  53.         if (product.definition.id == removeAds1 || product.definition.id == removeAds2 || product.definition.id == removeAds3)
  54.         {
  55.             if (failReason == PurchaseFailureReason.DuplicateTransaction)
  56.             {
  57.                 UserData.Instance.isBoughtRemoveAds = true;
  58.                 if (UserData.Instance.isBoughtRemoveAds)
  59.                 {
  60.                     MediationManager.IsSkipResumeAds = true;
  61.                     BS_Data.MediationEnableAd = true;
  62.                     MediationManager.IsStopResume = false;
  63.  
  64.  
  65.                     UserData.Instance.HideElementAds();
  66.                     UIGameplayController.Instance.OffButtonRemoveAds();
  67.                 }
  68.             }
  69.         }
  70. #endif
  71.     }
  72.  
  73.     public void OnPurchaseFailed(Product product, PurchaseFailureDescription failReason)
  74.     {
  75.         MediationManager.IsStopResume = false;
  76.         Debug.LogWarning(product.definition.id + " fail because " + failReason.message);
  77.     }
  78.  
  79.     public void OnInitializeFailed(InitializationFailureReason error)
  80.     {
  81.         Debug.Log($"====> IAP Initilize Failed: {error}");
  82.     }
  83.  
  84.     public void OnInitializeFailed(InitializationFailureReason error, string message)
  85.     {
  86.         Debug.Log($"====> IAP Initilize Failed:{error}, message : {message} ");
  87.     }
  88.  
  89.     public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs purchaseEvent)
  90.     {
  91.         return PurchaseProcessingResult.Complete;
  92.     }
  93.  
  94.     public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
  95.     {
  96.         _storeController = controller;
  97.         _storeExtensionProvider = extensions;
  98. #if UNITY_ANDROID || UNITY_EDITOR
  99.         if (controller.products.WithID(removeAds1).hasReceipt || controller.products.WithID(removeAds2).hasReceipt || controller.products.WithID(removeAds3).hasReceipt)
  100.         {
  101.             UserData.Instance.isBoughtRemoveAds = true;
  102.         }
  103.         else
  104.         {
  105.             UserData.Instance.isBoughtRemoveAds = false;
  106.         }
  107.  
  108.         if (UserData.Instance.isBoughtRemoveAds)
  109.         {
  110.             BS_Data.MediationEnableAd = true;
  111.  
  112.             UserData.Instance.HideElementAds();
  113.             UIGameplayController.Instance.OffButtonRemoveAds();
  114.         }
  115. #endif
  116.  
  117. #if UNITY_IOS
  118.         extensions.GetExtension<IAppleExtensions>().RestoreTransactions((result, error) =>
  119.         {
  120.             if (result)
  121.             {
  122.                 // This does not mean anything was restored,
  123.                 // merely that the restoration process succeeded.
  124.                 Debug.Log("iap: restore success ");
  125.  
  126.                 UserData.Instance.isBoughtRemoveAds = result;
  127.                 if (UserData.Instance.isBoughtRemoveAds)
  128.                 {
  129.                     BS_Data.MediationEnableAd = true;
  130.  
  131.                     UserData.Instance.HideElementAds();
  132.                     UIGameplayController.Instance.OffButtonRemoveAds();
  133.                 }
  134.             }
  135.             else
  136.             {
  137.                 // Restoration failed.
  138.                 Debug.Log("iap: restore fail ????? " + error);
  139.             }
  140.         });
  141.  
  142.         extensions.GetExtension<IAppleExtensions>().RefreshAppReceipt((receipt) =>
  143.         {
  144.             // This handler is invoked if the request is successful.
  145.             // Receipt will be the latest app receipt.
  146.             Debug.Log("iap: receipt " + receipt);
  147.             MediationManager.IsSkipResumeAds = true;
  148.         },
  149.         (err) =>
  150.         {
  151.             // This handler will be invoked if the request fails,
  152.             // such as if the network is unavailable or the user
  153.             // enters the wrong password.
  154.             Debug.Log("iap: err " + err);
  155.         });
  156. #endif
  157.     }
  158.  
  159.     public void OnTransactionsRestored(bool isRestore, string text)
  160.     {
  161.         if (isRestore)
  162.         {
  163.             Debug.Log("iap: restore remove ads success");
  164.             MediationManager.IsSkipResumeAds = true;
  165.             UserData.Instance.isBoughtRemoveAds = true;
  166.         }
  167.     }
  168. }
  169.