using System; using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.Advertisements; using UnityEngine.Events; using UnityEngine.Purchasing; public class ManagerIAP : IStoreListener { #region 变量 public static bool LoadComplete; public static UnityAction AdAction; public static ManagerIAP Instance; public static IStoreController IStoreController; public static IExtensionProvider IExtensionProvider; public static Dictionary ProductDic = new Dictionary(); #endregion public ManagerIAP() { ConfigurationBuilder cb = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); //try //{ // ConfigurationBuilder cb = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); //} //catch (Exception) //{ // ManaDebug.Log("Debug5"); //} try { InitializeAd(); } catch (Exception) { ManaDebug.Log("Debug1"); } try { cb = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); } catch (Exception) { ManaDebug.Log("Debug2"); } try { if (cb == null) { ManaDebug.Log("Debug3"); } else { UnityPurchasing.Initialize(this, cb); } } catch (Exception) { ManaDebug.Log("Debug4"); } Instance = this; } public static void InitializeAd() { if (Application.platform == RuntimePlatform.IPhonePlayer) { Advertisement.Initialize("1408492"); } else if (Application.isMobilePlatform) { Advertisement.Initialize("1408493"); } else if (Application.isEditor) { Advertisement.Initialize("1408493"); } } public static void PlayAd(UnityAction action) { if (Advertisement.IsReady()) { AdAction = action; ShowOptions showOptions = new ShowOptions(); showOptions.resultCallback = AdCallback; Advertisement.Show(showOptions); } else { Bubble.Show(null, Language.GetStr("IAP", "LoadAd")); if (!Advertisement.isInitialized) { InitializeAd(); } } } public static void Purchase(string id) { if (!LoadComplete) { Bubble.Show(null, Language.GetStr("IAP", "PurchaseFail")); } IStoreController.InitiatePurchase(id); } public static void AdCallback(ShowResult showResult) { if (showResult == ShowResult.Finished) { AdAction.Invoke(); ManaData.AdAmt++; } else if (showResult == ShowResult.Skipped) { Bubble.Show(null, Language.GetStr("IAP", "IncompleteAd")); } else if (showResult == ShowResult.Failed) { Bubble.Show(null, Language.GetStr("IAP", "FailAd")); } } public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e) { Bubble.Show(null, Language.GetStr("IAP", "PurchaseSuccess")); ProductDic[e.purchasedProduct.definition.id].Invoke(); return PurchaseProcessingResult.Complete; } public void OnInitialized(IStoreController controller, IExtensionProvider extensions) { LoadComplete = true; IStoreController = controller; IExtensionProvider = extensions; } public void OnInitializeFailed(InitializationFailureReason error) { LoadComplete = false; } public void OnPurchaseFailed(Product i, PurchaseFailureReason p) { Bubble.Show(null, Language.GetStr("IAP", "PurchaseFail")); } }