update: 完善标准化打点接口, 补全自定义事件封装接口

--story=1020273 --user=yufei.hu 【中台】【BI】 中台打点标准化, 更新原有的打点和用户属性上报逻辑 https://www.tapd.cn/33527076/s/1147868

Signed-off-by: huyufei <yufei.hu@castbox.fm>
hotfix/v1.0.12.2
胡宇飞 2024-05-30 20:49:15 +08:00
parent aca914ab02
commit 5882d213c3
3 changed files with 95 additions and 52 deletions

View File

@ -133,39 +133,27 @@ namespace Guru
LogEvent(EventLevelEnd, dict);
if (isSuccess)
{
int lv = BPlay;
if (lv == 0) lv = level;
LevelEndSuccess(lv, levelType, itemId);
}
// if (isSuccess)
// {
// int lv = BPlay;
// if (lv == 0) lv = level;
// LevelEndSuccess(lv, levelType, itemId);
// }
}
/// <summary>
/// 新用户通过第几关仅记录前n关,根据项目自行确定,不区分关卡类型)[买量用]
/// </summary>
/// <param name="level">总计完成的管卡数 (b_play)</param>
/// <param name="levelType"></param>
/// <param name="itemId">棋局id /图片id</param>
public static void LevelEndSuccess( int level, string levelType = "", string itemId = "")
/// <param name="extra"></param>
public static void LevelEndSuccess( int level, Dictionary<string, object> extra = null)
{
if (level > GuruSettings.Instance.AnalyticsSetting.LevelEndSuccessNum)
return;
string eventName = $"level_end_success_{level}";
var dict = new Dictionary<string, object>()
{
{ ParameterLevel, level },
};
if(!string.IsNullOrEmpty(levelType))
dict[ParameterItemCategory] = levelType;
if(!string.IsNullOrEmpty(itemId))
dict[ParameterItemId] = itemId;
LogEvent(eventName, dict, new EventSetting()
LogEvent(eventName, extra, new EventSetting()
{
EnableFirebaseAnalytics = true,
EnableFacebookAnalytics = true,
@ -177,7 +165,7 @@ namespace Guru
/// 第一次通关打点
/// </summary>
public static void LevelFirstEnd(string levelType, string levelName, int level,
string result, int? duration = null, Dictionary<string, object> extra = null)
string result, int duration = 0, Dictionary<string, object> extra = null)
{
var dict = new Dictionary<string, object>()
{
@ -188,8 +176,8 @@ namespace Guru
{ ParameterResult, result },
};
if (duration != null)
dict[ParameterDuration] = duration.Value;
if (duration > 0)
dict[ParameterDuration] = duration;
if (extra != null)
dict.AddRange(extra, isOverride: true);
@ -455,45 +443,60 @@ namespace Guru
#region Analytics Game IAP 游戏内购打点
/// <summary>
/// app 内弹出的付费引导
/// 当付费页面打开时调用iap_imp
/// </summary>
/// <param name="itemCategory">界面跳转的来源</param>
/// <param name="productID">product id,多个产品用逗号分隔第一个商品id放主推商品id</param>
public static void IAPImp(string itemCategory, string productID)
/// <param name="scene">界面跳转的来源</param>
/// <param name="extra">扩展参数</param>
public static void IAPImp(string scene, Dictionary<string, object> extra = null)
{
LogEvent(EventIAPImp, new Dictionary<string, object>()
var dict = new Dictionary<string, object>()
{
{ ParameterItemCategory, itemCategory },
{ ParameterItemName, productID },
});
{ ParameterItemCategory, scene },
};
if(extra != null) dict = GuruSDKUtils.MergeDictionary(dict, extra);
LogEvent(EventIAPImp, dict);
}
/// <summary>
/// app 内弹出的付费引导
/// 当付费页面关闭时调用iap_close
/// </summary>
/// <param name="itemCategory">界面跳转的来源</param>
/// <param name="productID">product id,多个产品用逗号分隔第一个商品id放主推商品id</param>
public static void IAPClose(string itemCategory, string productID)
/// <param name="scene"></param>
/// <param name="extra"></param>
public static void IAPClose(string scene, Dictionary<string, object> extra = null)
{
LogEvent(EventIAPClose, new Dictionary<string, object>()
var dict = new Dictionary<string, object>()
{
{ ParameterItemCategory, itemCategory },
{ ParameterItemName, productID },
});
{ ParameterItemCategory, scene },
};
if(extra != null) dict = GuruSDKUtils.MergeDictionary(dict, extra);
LogEvent(EventIAPClose, dict);
}
/// <summary>
/// app 内弹出的付费引导
/// 点击付费按钮时调用 (iap_clk)
/// </summary>
/// <param name="itemCategory">界面跳转的来源</param>
/// <param name="productID">product id,多个产品用逗号分隔第一个商品id放主推商品id</param>
public static void IAPClick(string itemCategory, string productID)
/// <param name="scene">支付场景</param>
/// <param name="productId">道具的 sku</param>
/// <param name="basePlanId">offer 的 basePlanId</param>
/// <param name="offerId">offer 的 offerId</param>
/// <param name="extra">扩展参数</param>
public static void IAPClick(string scene, string productId, string basePlanId = "", string offerId = "", Dictionary<string, object> extra = null)
{
LogEvent(EventIAPClick, new Dictionary<string, object>()
string sku = productId;
if (!string.IsNullOrEmpty(offerId) && !string.IsNullOrEmpty(basePlanId))
{
{ ParameterItemCategory, itemCategory },
{ ParameterItemName, productID },
});
sku = $"{productId}:{basePlanId}:{offerId}"; // 上报三连 ID
}
var dict = new Dictionary<string, object>()
{
{ ParameterItemCategory, scene },
{ ParameterItemName, sku },
};
if(extra != null) dict = GuruSDKUtils.MergeDictionary(dict, extra);
LogEvent(EventIAPClick, dict);
}
/// <summary>
@ -690,6 +693,10 @@ namespace Guru
}
#endregion
}
}

View File

@ -217,15 +217,26 @@ namespace Guru
FirebaseAnalytics.LogEvent(eventName, parameters.ToArray());
}
Dictionary<string, object> dict = new Dictionary<string, object>(extras);
Dictionary<string, object> dict = new Dictionary<string, object>();
if (extras != null)
{
foreach (var k in extras.Keys)
{
dict.Add(k, extras[k]);
}
}
if (eventSetting.EnableAdjustAnalytics)
{
AdjustEvent adjustEvent = Analytics.CreateAdjustEvent(eventName);
if (adjustEvent != null)
{
foreach (var kv in dict)
if (dict.Count > 0)
{
adjustEvent.AddEventParameter(kv.Key, kv.Value.ToString());
foreach (var kv in dict)
{
adjustEvent.AddEventParameter(kv.Key, kv.Value.ToString());
}
}
Adjust.trackEvent(adjustEvent);
}

View File

@ -1,7 +1,9 @@
namespace Guru
{
using UnityEngine;
using System.Collections.Generic;
public static class GuruSDKUtils
{
@ -22,5 +24,28 @@ namespace Guru
}
return new Color(r, g, b, a);
}
public static Dictionary<string, object> MergeDictionary(Dictionary<string, object> source, Dictionary<string, object> other)
{
int len = source?.Count ?? 0 + other?.Count ?? 0;
if (len == 0) len = 10;
var newDict = new Dictionary<string, object>(len);
if (source != null)
{
foreach (var k in source.Keys)
{
newDict[k] = source[k];
}
}
if (other != null)
{
foreach (var k in other.Keys)
{
newDict[k] = other[k];
}
}
return newDict;
}
}
}