123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- using System;
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- using cn.sharesdk.unity3d;
- using UnityEngine.Advertisements;
- using UnityEngine.Events;
- using UnityEngine.Purchasing;
- public class ManagerIAP : MonoBehaviour, IStoreListener
- {
- #region 变量
- public static bool LoadComplete;
- public static UnityAction AdAction;
- public static ManagerIAP Instance;
- public static IStoreController IStoreController;
- public static IExtensionProvider IExtensionProvider;
- public static List<string> ProductList = new List<string>();
- public static Dictionary<string, UnityAction> ProductDic = new Dictionary<string, UnityAction>();
- #region Share配置
- public static ShareSDK ShareSdk;
- #endregion
- #endregion
- public void Awake()
- {
- Instance = this;
- }
- public static void Initialize()
- {
- InitializeAd();
- ConfigurationBuilder cb = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
- cb.AddProduct("Test", ProductType.Consumable);
- ProductList.Add("Test");
- UnityPurchasing.Initialize(Instance, cb);
- //ShareSdk = Instance.gameObject.AddComponent<ShareSDK>();
- //ShareSdk.Initialize();
- }
- 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"));
- return;
- }
- if (!ProductList.Contains(id))
- {
- Bubble.Show(null, Language.GetStr("IAP", "PurchaseUnvalid"));
- return;
- }
- 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;
- ManaDebug.Log("初始化IAP成功");
- }
- public void OnInitializeFailed(InitializationFailureReason error)
- {
- LoadComplete = false;
- Debug.Log("初始化IAP失败");
- ManaDebug.Log("初始化IAP失败");
- }
- public void OnPurchaseFailed(Product i, PurchaseFailureReason p)
- {
- Bubble.Show(null, Language.GetStr("IAP", "PurchaseFail"));
- }
- }
|