diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs index 764ff56..c8d2486 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs @@ -1,4 +1,4 @@ -using JetBrains.Annotations; + namespace Guru { @@ -621,6 +621,22 @@ namespace Guru string scene = orderData.scene; bool isFree = orderData.isFree; string offerId = orderData.offerId; + + string transactionId = ""; + string productToken = ""; + string receipt = ""; + + if (orderData is GoogleOrderData gdata) + { + productToken = gdata.token; + } + else if (orderData is AppleOrderData adata) + { + receipt = adata.receipt; + } + + + // TCH 001 Tch001IAPRev(usdPrice, productId, orderId, orderType, orderDate); // TCH 020 @@ -631,12 +647,12 @@ namespace Guru if (orderData.orderType == 1) { // sub_pruchase : Firebase + Guru + Adjust - SubPurchase(usdPrice, productId, orderId, orderDate); + SubPurchase(usdPrice, productId, orderId, orderDate, productToken, receipt); } else { // iap_purchase : Firebase + Guru + Adjust - IAPPurchase(usdPrice, productId, orderId, orderDate); + IAPPurchase(usdPrice, productId, orderId, orderDate, productToken, receipt); } // IAP Ret true : Firebase + Guru + Adjust @@ -655,20 +671,24 @@ namespace Guru /// /// /// - public static void IAPPurchase(double value, string productId, string orderId, string orderDate) + public static void IAPPurchase(double value, string productId, string orderId, string orderDate, + string purchaseToken = "", string receipt = "") { - IAPPurchaseReport(EventIAPPurchase, value, productId, orderId, "IAP", orderDate); + IAPPurchaseReport(EventIAPPurchase, value, productId, orderId, "IAP", orderDate, purchaseToken, receipt); } - public static void SubPurchase(double value, string productId, string orderId, string orderDate) + public static void SubPurchase(double value, string productId, string orderId, string orderDate, + string purchaseToken = "", string receipt = "") { - IAPPurchaseReport(EventSubPurchase, value, productId, orderId, "SUB", orderDate); + IAPPurchaseReport(EventSubPurchase, value, productId, orderId, "SUB", orderDate, purchaseToken, receipt); } - private static void IAPPurchaseReport(string eventName, double value, string productId, string orderId, string orderType, string orderDate) + private static void IAPPurchaseReport(string eventName, double value, string productId, string orderId, string orderType, string orderDate, + string purchaseToken = "", string receipt = "") { - LogEvent(eventName, new Dictionary() + + var dict = new Dictionary() { [ParameterPlatform] = IAPPlatform, [ParameterValue] = value, @@ -677,11 +697,19 @@ namespace Guru ["order_id"] = orderId, ["order_type"] = orderType, ["trans_ts"] = orderDate - }, new EventSetting() + }; + + // 上报Firebase + 自打点 + LogEvent(eventName, dict, new EventSetting() { EnableFirebaseAnalytics = true, }); + + + // 上报 Adjust 支付事件 + if (value > 0) { - EnableFirebaseAnalytics = true, - EnableAdjustAnalytics = true, - }); + // 根据事件名称来获取对应的事件Token(iap_purchase/sub_purchase) + LogAdjustRevenueEvent(eventName, value, productId, orderId, purchaseToken, receipt, dict); + } + } #endregion diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs index a6dad54..9986dc8 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs @@ -248,6 +248,44 @@ namespace Guru } } + /// + /// 上报 Adjust 事件 + /// + /// + /// + /// + /// + /// + /// + /// + /// + internal static bool LogAdjustRevenueEvent(string eventName, double usdPrice, + string productId = "", string transactionId = "", string purchaseToken = "", string receipt = "", + Dictionary data = null ) + { + AdjustEvent adjustEvent = Analytics.CreateAdjustEvent(eventName); + if (adjustEvent != null) + { + adjustEvent.setRevenue(usdPrice, USD); + if (!string.IsNullOrEmpty(productId)) adjustEvent.setProductId(productId); + if (!string.IsNullOrEmpty(transactionId)) adjustEvent.setTransactionId(transactionId); + if (!string.IsNullOrEmpty(purchaseToken)) adjustEvent.setPurchaseToken(purchaseToken); + if (!string.IsNullOrEmpty(receipt)) adjustEvent.setReceipt(receipt); + + if (data != null && data.Count > 0) + { + foreach (var kv in data) + { + adjustEvent.AddEventParameter(kv.Key, kv.Value.ToString()); + } + } + + Adjust.trackEvent(adjustEvent); + return true; + } + return false; + } + #endregion #region 通用打点