diff --git a/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs b/Runtime/GuruCore/Runtime/Analytics/Analytics.TemplateDefine.cs index ca4268d..3c976d2 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,20 @@ 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,14 +645,12 @@ namespace Guru if (orderData.orderType == 1) { // sub_pruchase : Firebase + Guru + Adjust - Debug.Log($"{TAG} --- {productId}:{usdPrice} report SubPurchase"); - SubPurchase(usdPrice, productId, orderId, orderDate); + SubPurchase(usdPrice, productId, orderId, orderDate, productToken, receipt); } else { // iap_purchase : Firebase + Guru + Adjust - Debug.Log($"{TAG} --- {productId}:{usdPrice} report IAPPurchase"); - IAPPurchase(usdPrice, productId, orderId, orderDate); + IAPPurchase(usdPrice, productId, orderId, orderDate, productToken, receipt); } // IAP Ret true : Firebase + Guru + Adjust @@ -657,20 +669,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, @@ -679,11 +695,19 @@ namespace Guru ["order_id"] = orderId, ["order_type"] = orderType, ["trans_ts"] = orderDate - }, new EventSetting() - { - EnableFirebaseAnalytics = true, - EnableAdjustAnalytics = true, - }); + }; + + // 上报Firebase + 自打点 + LogEvent(eventName, dict, new EventSetting() { EnableFirebaseAnalytics = true, }); + + + // 上报 Adjust 支付事件 + // if (value > 0) + // { + // 根据事件名称来获取对应的事件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 8abf985..210e48e 100644 --- a/Runtime/GuruCore/Runtime/Analytics/Analytics.cs +++ b/Runtime/GuruCore/Runtime/Analytics/Analytics.cs @@ -247,6 +247,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 通用打点