using BravestarsSDK; using System; using UnityEngine; using UnityEngine.Purchasing; using UnityEngine.Purchasing.Extension; using UnityEngine.UI; public class IAPServices : MonoBehaviour, IStoreListener { #if UNITY_ANDROID||UNITY_EDITOR string removeAds1 = "com.bravestars.amaze.flag.coloring.removeads.1"; string removeAds2 = "com.bravestars.amaze.flag.coloring.removeads.2"; string removeAds3 = "com.bravestars.amaze.flag.coloring.removeads.3"; #endif #if UNITY_IOS string removeAds1 = "com.bravestars.amaze.flag.coloring.removeads.1"; string removeAds2 = "com.bravestars.amaze.flag.coloring.removeads.2"; string removeAds3 = "com.bravestars.amaze.flag.coloring.removeads.3"; #endif IStoreController _storeController; IExtensionProvider _storeExtensionProvider; public static IAPServices Instance; void Awake() { //if (Application.platform!=RuntimePlatform.IPhonePlayer) //{ //} Instance = this; Debug.LogWarning("siuuuu"); } public void OnPurchaseComplete(Product product) { if (product.definition.id == removeAds1 || product.definition.id == removeAds2 || product.definition.id == removeAds3) { Debug.Log("iap: remove success!!"); UserData.Instance.isBoughtRemoveAds = true; MediationManager.IsSkipResumeAds = true; MediationManager.IsStopResume = false; BS_Data.MediationEnableAd = true; UserData.Instance.HideElementAds(); UIGameplayController.Instance.OffButtonRemoveAds(); } } public void OnPurchaseFailed(Product product, PurchaseFailureReason failReason) { Debug.LogWarning("iap: " + product.definition.id + " fail because " + failReason); #if UNITY_IOS||UNITY_EDITOR if (product.definition.id == removeAds1 || product.definition.id == removeAds2 || product.definition.id == removeAds3) { if (failReason == PurchaseFailureReason.DuplicateTransaction) { UserData.Instance.isBoughtRemoveAds = true; if (UserData.Instance.isBoughtRemoveAds) { MediationManager.IsSkipResumeAds = true; BS_Data.MediationEnableAd = true; MediationManager.IsStopResume = false; UserData.Instance.HideElementAds(); UIGameplayController.Instance.OffButtonRemoveAds(); } } } #endif } public void OnPurchaseFailed(Product product, PurchaseFailureDescription failReason) { MediationManager.IsStopResume = false; Debug.LogWarning(product.definition.id + " fail because " + failReason.message); } public void OnInitializeFailed(InitializationFailureReason error) { Debug.Log($"====> IAP Initilize Failed: {error}"); } public void OnInitializeFailed(InitializationFailureReason error, string message) { Debug.Log($"====> IAP Initilize Failed:{error}, message : {message} "); } public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs purchaseEvent) { return PurchaseProcessingResult.Complete; } public void OnInitialized(IStoreController controller, IExtensionProvider extensions) { _storeController = controller; _storeExtensionProvider = extensions; #if UNITY_ANDROID || UNITY_EDITOR if (controller.products.WithID(removeAds1).hasReceipt || controller.products.WithID(removeAds2).hasReceipt || controller.products.WithID(removeAds3).hasReceipt) { UserData.Instance.isBoughtRemoveAds = true; } else { UserData.Instance.isBoughtRemoveAds = false; } if (UserData.Instance.isBoughtRemoveAds) { BS_Data.MediationEnableAd = true; UserData.Instance.HideElementAds(); UIGameplayController.Instance.OffButtonRemoveAds(); } #endif #if UNITY_IOS extensions.GetExtension<IAppleExtensions>().RestoreTransactions((result, error) => { if (result) { // This does not mean anything was restored, // merely that the restoration process succeeded. Debug.Log("iap: restore success "); UserData.Instance.isBoughtRemoveAds = result; if (UserData.Instance.isBoughtRemoveAds) { BS_Data.MediationEnableAd = true; UserData.Instance.HideElementAds(); UIGameplayController.Instance.OffButtonRemoveAds(); } } else { // Restoration failed. Debug.Log("iap: restore fail ????? " + error); } }); extensions.GetExtension<IAppleExtensions>().RefreshAppReceipt((receipt) => { // This handler is invoked if the request is successful. // Receipt will be the latest app receipt. Debug.Log("iap: receipt " + receipt); MediationManager.IsSkipResumeAds = true; }, (err) => { // This handler will be invoked if the request fails, // such as if the network is unavailable or the user // enters the wrong password. Debug.Log("iap: err " + err); }); #endif } public void OnTransactionsRestored(bool isRestore, string text) { if (isRestore) { Debug.Log("iap: restore remove ads success"); MediationManager.IsSkipResumeAds = true; UserData.Instance.isBoughtRemoveAds = true; } } }