/// <summary> /// 广告策略切换 /// </summary> /// <param name="_adType"></param> public void SetAdType(AdType _adType) { if (_adType == adType && adType != AdType.None)//如果不是第一次执行广告策略并且跟上次的广告策略相比没有变化则不用进行初始化切换 { return; } adType = _adType; AllSDKManager.SDKDebug(Name + " 策略切换至原生广告"); foreach (AdData item in adSdkDic.Values) { if (item.adType == adType) { item.Ad.Init(); AllSDKManager.SDKDebug(Name + "/" + item.Ad.Name + "初始化"); } else { item.Ad.Disable(); AllSDKManager.SDKDebug(Name + "/" + item.Ad.Name + "关闭"); } } if (SceneManager.GetActiveScene().name != "Game") { ShowBanner(); } }
/// <summary> /// 埋点上报 /// </summary> /// <param name="upLoadBuryData">提交的数据</param> /// <returns></returns> public static bool UpLoadBury(UpLoadBuryData upLoadBuryData) { if (upLoadBuryData == null) { AllSDKManager.SDKDebug("==数据上报失败:没有数据上报==="); return(false); } HTTPRequest uploadRequest = new HTTPRequest(new Uri(Config.UpLoadBuryUrl), HTTPMethods.Post, OnUpLoadBury); //AllSDKManager.SDKDebug("==准备上报数据===url:" + Config.UpLoadBuryUrl); //AllSDKManager.SDKDebug("topic:" + upLoadBuryData.topic); //AllSDKManager.SDKDebug("platform:" + upLoadBuryData.platform); //AllSDKManager.SDKDebug("version:" + upLoadBuryData.version); //AllSDKManager.SDKDebug("userId:" + upLoadBuryData.userId); //AllSDKManager.SDKDebug("gameId:" + upLoadBuryData.gameId); //AllSDKManager.SDKDebug("deviceId:" + upLoadBuryData.deviceId); //AllSDKManager.SDKDebug("action:" + upLoadBuryData.action); uploadRequest.RawData = Encoding.UTF8.GetBytes(JsonUtility.ToJson(upLoadBuryData)); AllSDKManager.SDKDebug("NativeAnalytics: " + "uploadJson:" + JsonUtility.ToJson(upLoadBuryData), "yellow"); uploadRequest.Send(); AllSDKManager.SDKDebug("NativeAnalytics: " + "==数据上报成功===", "yellow"); return(true); }
/// <summary> /// 广告播放结束埋点(此方法必须与Event_Ad_Start函数成对使用,否则不会发送到友盟) /// 注:成功使用此方法 /// </summary> public void Event_Ad_End(string _adTeam, AdPlayType _AdPlayType) { string adPlayMsg = ""; string key = ""; if (AdDic == null || AdDic.Count <= 0) { return; } foreach (string _key in AdDic.Keys) { key = _key; } adPlayMsg = AdDic[key]; adPlayMsg += " | 播放结果:成功" + " | 关闭时间:" + System.DateTime.Now; AllSDKManager.SDKDebug(Name + adPlayMsg); AdDic[key] = adPlayMsg; //记录完成发送到友盟后台 if (AdDic != null && AdDic.Count > 0) { SetEvent(Ad, AdDic); } }
/// <summary> /// 展示视屏奖励 /// </summary> public void ShowRewardedVideo() { AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_Ad_Start(adSdkList[0].Ad.Name, AdPlayType.RewardedVideo); adSdkList[0].Ad.ShowRewardedVideo(); //GameParse(); Debug.Log("==test==视频奖励广告开始播放: timeScale=" + Time.timeScale); }
/// <summary> /// 广告播放结束埋点(此方法必须与Event_IAP_Start函数成对使用,否则不会发送到友盟) /// 注:失败使用此方法 /// </summary> /// <param name="_failed">失败原因</param> public void Event_Ad_End(string _adTeam, AdPlayType _AdPlayType, string _failed = "") { string adPlayMsg = ""; string key = ""; if (AdDic == null || AdDic.Count <= 0) { return; } foreach (string _key in AdDic.Keys) { key = _key; } adPlayMsg = AdDic[key]; if (_failed == "no") { adPlayMsg = "设备ID:" + deveceId + " | 播放结果:失败 | 失败原因:没有用的商家"; } else { adPlayMsg += " | 播放结果:失败 | 失败原因:" + _failed; } AllSDKManager.SDKDebug(Name + adPlayMsg); AdDic[key] = adPlayMsg; //记录完成发送到友盟后台 if (AdDic != null && AdDic.Count > 0) { SetEvent(Ad, AdDic); } }
/// <summary> /// 内购结束埋点(此方法必须与Event_IAP_Start函数成对使用,否则不会发送到友盟) /// 注:失败使用此方法 /// </summary> /// <param name="_failed">失败原因</param> public void Event_IAP_End(string _failed = "") { string buyMsg = ""; string key = ""; if (IAPDic == null || IAPDic.Count <= 0) { return; } foreach (string _key in IAPDic.Keys) { key = _key; } buyMsg = IAPDic[key]; buyMsg += " | 购买情况:失败" + " | " + "失败原因:" + _failed + " | 结束时间:" + System.DateTime.Now; AllSDKManager.SDKDebug(Name + " | 购买情况:失败" + " | " + "失败原因:" + _failed + " | 结束时间:" + System.DateTime.Now); IAPDic[key] = buyMsg; //记录完成发送到友盟后台 if (IAPDic != null && IAPDic.Count > 0) { SetEvent(IAP, IAPDic); } }
/// <summary> /// 获取下一个广告并播放 /// </summary> /// <param name="_AdPlayType"></param> void ShowAdHandler(AdPlayType _AdPlayType) { IAD nextAd = adSdkList[nextAdSdk].Ad; AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_Ad_Start(nextAd.Name, _AdPlayType, false); switch (_AdPlayType) { case AdPlayType.Banner: nextAd.ShowBanner(); break; case AdPlayType.Interstitial: Debug.Log("ShowAdHandler Interstitial ==test==插页播放成功: timeScale=" + Time.timeScale); nextAd.ShowInterstitial(); break; case AdPlayType.RewardedVideo: Debug.Log("ShowAdHandler ShowRewardedVideo ==test==插页播放成功: timeScale=" + Time.timeScale); nextAd.ShowRewardedVideo(); break; default: break; } }
/// <summary> /// 购买去除广告 /// </summary> public void OnPurchaseClicked() { currentBuy = buy_adRemove; buyItemCompleteEvent += buyItemDic[currentBuy].OnBuy; controller.InitiatePurchase(currentBuy); AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_Start("RemoveAd"); }
public void Init() { foreach (Type item in analythicsSdkDic.Keys) { analythicsSdkDic[item].Init(); AllSDKManager.SDKDebug(Name + " " + analythicsSdkDic[item].Name + "初始化"); } }
/// <summary> /// 隐藏横幅 /// </summary> public void HideBanner() { foreach (AdData item in adSdkDic.Values) { item.Ad.HideBanner(); AllSDKManager.SDKDebug(Name + "/" + item.Ad.Name + "隐藏Banner"); } }
/// <summary> /// 服务器接口失败埋点 /// </summary> /// <param name="_api">方法名</param> /// <param name="_failed">失败原因</param> public void Event_ServerAPI(string _api, string _failed = "未知原因") { Dictionary <string, string> dic = new Dictionary <string, string>(); dic["HttpServerHelper"] = "设备ID:" + deveceId + " | 时间:" + System.DateTime.Now + " | 方法:" + _api + " | 原因:" + _failed; AllSDKManager.SDKDebug(Name + "设备ID:" + deveceId + " | 时间:" + System.DateTime.Now + " | 方法:" + _api + " | 原因:" + _failed); SetEvent(serverIPA, dic); }
/// <summary> /// 按钮点击埋点 /// </summary> /// <param name="_page">页面</param> /// <param name="_buttonName">按钮名</param> public void Event_Button(string _page, string _buttonName) { Dictionary <string, string> buttonDic = new Dictionary <string, string>(); buttonDic["Button_Click"] = "UserId:" + "设备ID:" + deveceId + " | 页面:" + _page + " | 按钮:" + _buttonName + " | 点击时间:" + System.DateTime.Now; SetEvent(button, buttonDic); AllSDKManager.SDKDebug(Name + "UserId:" + "设备ID:" + deveceId + " | 页面:" + _page + " | 按钮:" + _buttonName + " | 点击时间:" + System.DateTime.Now); }
/// <summary> /// 初始化 /// </summary> /// <param name="_controller"></param> /// <param name="_extensions"></param> public void OnInitialized(IStoreController _controller, IExtensionProvider _extensions) { controller = _controller; extensions = _extensions; appleExtensions = _extensions.GetExtension <IAppleExtensions>(); // appleExtensions.RegisterPurchaseDeferredListener(); //购买延迟 AllSDKManager.SDKDebug(Name + "初始化成功"); }
void DisplayBanner() { timer = 0; isClick = true; bannerImage.gameObject.SetActive(true); isBannerOn = true; AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_NativeAd(Name, "show", currentBanner.name, currentJumpUrl); AllSDKManager.SDKDebug("++++++ texture.name;" + NativeAdAssetsDataWWW.GetAssets(currentIndex).texture.name, "cyan"); }
public void Init() { foreach (AdData item in adSdkDic.Values) { item.Ad.Init(); AllSDKManager.SDKDebug(Name + "/" + item.Ad.Name + "初始化"); } StartCoroutine(RequestAdType()); //开启广告策略检查 // ShowBanner(); }
/// <summary> /// 进入图片埋点 /// </summary> /// <param name="_name">图片名称</param> /// <param name="_where">图片位置</param> public void Event_Level_Enter(string _name, string _where) { Dictionary <string, string> levelEnterDic = new Dictionary <string, string>(); timeStart = new TimeSpan(DateTime.Now.Ticks); levelEnterDic["Level_Enter"] = "设备ID:" + deveceId + "从" + _where + " | 进入:第" + _name + "关" + " | 进入时间:" + System.DateTime.Now; SetEvent(level, levelEnterDic); AllSDKManager.SDKDebug(Name + "设备ID:" + deveceId + "从" + _where + " | 进入:第" + _name + "关" + " | 进入时间:" + System.DateTime.Now); }
/// <summary> /// 购买皮肤包回调 /// </summary> /// <param name="failed">失败原因</param> public void OnBuy(string failed) { if (failed == "") { } else { AllSDKManager.SDKDebug("皮肤包购买失败:" + failed); } UnityIAP.buyItemCompleteEvent -= OnBuy; }
/// <summary> /// 内购开始埋点(此方法必须与Event_IAP_End函数成对使用,否则不会发送到友盟) /// </summary> /// <param name="_name">内购项目名</param> public void Event_IAP_Start(string _name) { //记录前清空缓存 IAPDic.Clear(); //开始记录埋点 string buyMsg = "设备ID:" + deveceId + " | 内购项目:" + _name + " | 开始时间:" + System.DateTime.Now; AllSDKManager.SDKDebug(Name + "设备ID:" + deveceId + " | 内购项目:" + _name + " | 开始时间:" + System.DateTime.Now); IAPDic[_name] = buyMsg; }
void OnLoadBanner(string error = "") { if (error == "") { AllSDKManager.SDKDebug(Name + ":原生banner加载完成", "cyan"); } else { AllSDKManager.SDKDebug(Name + ":原生banner加载失败 失败原因:" + error, "cyan"); } }
/// <summary> /// 埋点测试 /// </summary> /// <param name="_level"></param> /// <param name="str"></param> /// <param name="str2"></param> public void Event_Test(string _level, string str, string str2) { GA.Event("测试", "测试数据:" + " 第一个参数:" + str + " 第二个参数:" + str2); Dictionary <string, string> levelAdDic = new Dictionary <string, string>(); levelAdDic["Level_Test_Id"] = _level; levelAdDic["Level_Test_Str1"] = str; levelAdDic["Level_Test_Str2"] = str2; SetEvent(test, levelAdDic); AllSDKManager.SDKDebug(Name + "测试场景:" + _level + " 测试参数1:" + str + " 测试参数2:" + str2); }
/// <summary> /// 去广告购买完成回调 /// </summary> /// <param name="failed">失败原因,没有即为成功</param> public void OnBuy(string failed) { Debug.Log("UnityIAP移除广告购买情况:" + failed); if (failed == "") { } else { AllSDKManager.SDKDebug("去广告失败回调:" + failed); } UnityIAP.buyItemCompleteEvent -= OnBuy; }
/// <summary> /// 插页关闭 /// </summary> public void InterstitialDone() { AllSDKManager.SDKDebug("==========Start=====" + Name + "玩家关闭了插页视频"); if (isAdInterstitialDone != null)//视屏广告播放完成 { isAdInterstitialDone(true); } GameResume(); Debug.Log("==test==插页播放成功: timeScale=" + Time.timeScale); AllSDKManager.SDKDebug("==========End=====" + Name + "玩家关闭了插页视频"); }
IEnumerator UploadData(string data) { AllSDKManager.SDKDebug("uploaddata:" + Config.AdServer + "/dada2?" + data, "Blue"); WWW upload = new WWW(Config.AdServer + "/dada2?" + data); yield return(upload); if (!string.IsNullOrEmpty(upload.error)) { AllSDKManager.SDKDebug("上报失败error:" + upload.error, "Blue"); } }
void RegistAnalyticsSdk(Type _analythicsType, IAnalythics _iAnalythics) { if (!analythicsSdkDic.ContainsKey(_analythicsType)) { analythicsSdkDic.Add(_analythicsType, _iAnalythics); AllSDKManager.SDKDebug(Name + " " + analythicsSdkDic[_analythicsType].Name + "注册成功"); } else { AllSDKManager.SDKDebug(Name + " 已经注册过这个平台" + _analythicsType.Name); } }
/// <summary> /// 广告播放开始埋点(此方法必须与Event_Ad_End函数成对使用,否则不会发送到友盟) /// </summary> /// <param name="_adTeam">广告商</param> /// <param name="_AdPlayType">广告类型</param> public void Event_Ad_Start(string _adTeam, AdPlayType _AdPlayType, bool _clear) { string AdPlayType = _AdPlayType.ToString(); //记录前清空缓存 AdDic.Clear(); //开始记录埋点 string adPlayMsg = "设备ID:" + deveceId + " | 广告商:" + _adTeam + " | 广告类型:" + _AdPlayType + " | 播放时间:" + System.DateTime.Now; AllSDKManager.SDKDebug(Name + "设备ID:" + deveceId + " | 广告商:" + _adTeam + " | 广告类型:" + _AdPlayType + " | 播放时间:" + System.DateTime.Now); AdDic[_adTeam] = adPlayMsg; }
/// <summary> /// 获取奖励 /// </summary> public void GetRewarded() { AllSDKManager.SDKDebug("==========Start=====" + Name + "获得视频奖励"); if (isAdRewardedDone != null)//视屏广告播放完成 { //Time.timeScale = 1; //Debug.Log("==test==视频奖励播放成功: timeScale=" + Time.timeScale); isAdRewardedDone(true); } AllSDKManager.SDKDebug("==========End=====" + Name + "获得视频奖励"); }
private void Start() { instance = this; name = "SDKController"; DontDestroyOnLoad(this.gameObject); // Config.setUUID();//获取并设置设备ID MyUtili.MyUtilities.initUUID(); //针对UnityAds做的特殊初始化处理(=======Start //它为啥和别的Ad初始化不一样? //因为unity的广告调用要开他娘的携程, //开携程就要继承mono, //继承mono就他娘的不能用new, //这就是下面这几行蛋疼的代码在这里的原因 GameObject unityAds = new GameObject(); unityAds.name = "UnityAds"; unityAds.AddComponent <UnityAds>(); DontDestroyOnLoad(unityAds); //================End) ////对于AppsFlyerManager的初始化处理 //GameObject AppsFlyerManager = new GameObject(); //AppsFlyerManager.name = "AppsFlyerManager"; //AppsFlyerManager.AddComponent<AppsFlyerManager>(); //DontDestroyOnLoad(AppsFlyerManager); //对于NativeAnalytics的初始化处理 GameObject NativeAnalytics = new GameObject(); NativeAnalytics.name = "NativeAnalytics"; NativeAnalytics.AddComponent <NativeAnalytics>(); DontDestroyOnLoad(NativeAnalytics); //对于原生广告的初始化处理 //GameObject nativeAds = new GameObject(); //nativeAds.name = "NativeAds"; //nativeAds.AddComponent<NativeAds>(); //DontDestroyOnLoad(nativeAds); AllSDKManager.Init(); MyUtili.MyUtilities.initUUID(); AllSDKManager.GetSDK <AdSdk>().IsEnable = Config.isRemovedAD() ? false : true; //AllSDKManager.GetSDK<AdSdk>().IsEnable = true; AllSDKManager.SDKDebug(Config.isRemovedAD().ToString()); AdShowControl.GameContinueCountNumber = 2; AdShowControl.CompleteRetryCountNumber = 2; AdShowControl.CompleteGameCountNumber = 3; }
/// <summary> /// 内购失败 /// </summary> /// <param name="i"></param> /// <param name="p">失败原因</param> public void OnPurchaseFailed(Product i, PurchaseFailureReason p) { string failed = "内购失败"; AllSDKManager.SDKDebug(Name + "内购失败"); switch (p) { case PurchaseFailureReason.PurchasingUnavailable: AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_End("系统购买功能不可用"); break; case PurchaseFailureReason.ExistingPurchasePending: AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_End("在请求新购买时,购买已在进行中"); break; case PurchaseFailureReason.ProductUnavailable: AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_End("该商品无法在商店购买"); break; case PurchaseFailureReason.SignatureInvalid: AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_End("购买收据的签名验证失败"); break; case PurchaseFailureReason.UserCancelled: AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_End("用户选择取消而不是继续购买"); break; case PurchaseFailureReason.PaymentDeclined: AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_End("付款有问题"); break; case PurchaseFailureReason.DuplicateTransaction: AllSDKManager.GetSDK <AdSdk>().IsEnable = false; AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_End("事务已成功完成时出现重复的事务错误"); break; case PurchaseFailureReason.Unknown: AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_End("未知失败"); break; default: break; } if (buyItemCompleteEvent != null) { buyItemCompleteEvent(failed); } AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_IAP_End(failed); }
/// <summary> /// 展示插页 /// </summary> public void ShowInterstitial() { if (IsEnable)//如果广告是开启的并且是播放广告的时间 再播放广告 { // if (IsEnable && (GameManager.levelLoaded > 10)) // { AllSDKManager.GetSDK <AllAnalyticsSdk>().Event_Ad_Start(adSdkList[0].Ad.Name, AdPlayType.Interstitial); adSdkDic[typeof(IronSourceAds)].Ad.ShowInterstitial(); //adSdkDic[typeof(ApplovinAds)].Ad.ShowInterstitial(); //GameParse(); //Time.timeScale = 0; Debug.Log("==test==插页广告开始播放: timeScale=" + Time.timeScale); // isAdTime = false; } }
/// <summary> /// 向服务器请求json配置 /// </summary> /// <returns></returns> IEnumerator RequestJsonData() { while (true) { WWW jsonWWW = new WWW(jsonUrl + "country=" + Config.Country + "&" + "platform=" + Config.Platform); AllSDKManager.SDKDebug(jsonUrl + "country=" + Config.Country + "&" + "platform=" + Config.Platform, "red"); yield return(jsonWWW); if (string.IsNullOrEmpty(jsonWWW.error)) { AllSDKManager.SDKDebug("jsonWWW:" + jsonWWW.text, "white"); try { string[] dataArr = jsonWWW.text.Split('*'); int _version = int.Parse(dataArr[0].Split(':')[1]);//获取服务器最新版本号 AllSDKManager.SDKDebug("_version:" + _version, "white"); AllSDKManager.SDKDebug("version:" + version, "white"); if (version < _version) //如果策划在玩家游戏时变更数据,则刷新,否则继续使用上次读取的数据 { version = _version; //更新客户端版本号 Debug.Log("<color=blue>" + dataArr[1] + "</color>"); string json = dataArr[1]; AllSDKManager.SDKDebug("json:" + json, "white"); NativeAdData = JsonUtility.FromJson <NativeAdData>(json);//数据更新 isJsonReady = true; LoadBanner(); } else { AllSDKManager.SDKDebug("数据没有变更", "white"); isJsonReady = true; } } catch (Exception e) { isJsonReady = false; AllSDKManager.SDKDebug("服务器发送的json数据不对"); } } else { isJsonReady = false; AllSDKManager.SDKDebug(jsonWWW.error, "white"); } yield return(new WaitForSeconds(int.Parse(NativeAdData.check)));//每隔30秒向服务器校验一次json配置的改变 } }