GSM Analytics

Cung cấp các tính năng để phân tích các chỉ số của game, thông qua các method trong class GSMAnalytics

  • Developer cần sử dụng các hàm có chức năng tương ứng để gửi thông tin về server, từ đó server sẽ phân tích dữ liệu, thông thường dữ liệu được phân tích vào ngày hôm sau. Các dữ liệu đã được phân tích xem tại admin.cscmobicorp.com

  • Nếu Developer thiết lập GSMObject với enviroment là Development thì sẽ xem dữ liệu phân tích tại: admindev.cscmobicorp.com

Hiện tại SDK cung cấp các hàm gọi thống kê sau:

  • LevelLog: Thống kê số lượng user, độ khó, thời gian chơi của một level

  • LevelLog Mini Game: Thống kê số lượng user, độ khó, thời gian chơi của một level

  • TaskQuestLog: Thống kê số lượng user trong 1 Task/quest

  • ResourceLog: Thống kê số lượng tài nguyên kiếm được/sử dụng của user trong một level

  • AdsLog: Thống kê xem chỉ số user xem ad ở vị trí nào trong một level.

  • AdImpressionLog: Thống kê các chỉ số Impression, DEU ... của quảng cáo trong level.

  • FunnelLog: Thống kê các biểu đồ phễu, để biết tỉ lệ user trong các phễu lọc như thế nào.

  • CounterLog: Dùng để thống kê đếm số lần, hoặc tổng giá trị cho 1 tham số nào đó cần log

1. Yêu cầu

  • Các game cần định nghĩa được các level sẽ tăng dần trong game, để từ đó biểu đồ dễ dàng nhìn ra được các chỉ số của user trong từng mốc level.

  • Nếu các game không có level, thì mặc định level=0 sẽ gửi lên server.

2. Level Log

  • Gọi mỗi khi user chơi ở 1 level,

  • Đo lường trạng thái start/win/lose/quit của từng level.

void LevelLog(string currentLevel, LevelTrackingStatus levelStatus, int duration, string group = "", string userType = "", string subGroup = "")

Các tham số

  • currentLevel(Required): Level hiện tại đang chơi, là chữ viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1"

  • levelStatus(Required): Các trạng thái hiện tại của level (start, win, lose, quit)

  • duration(Optional): Thời gian user bắt đầu start level cho đến khi win, lose, hoặc quit (Tính theo giây)

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • userType(Optional): Loại user

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

Hoặc: SDK sẽ tự động tính duration.

void LevelLog(string currentLevel, LevelTrackingStatus levelStatus, string group = "", string userType = "", string subGroup = "")

Các tham số

  • currentLevel(Required): Level hiện tại đang chơi, là chữ viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1" Nếu level dạng "1_1_1": tức có ngăn cách bằng thì tối đa chỉ có 3 cấp. Ví dụ: "1_1_1_1" sẽ là sai và hệ thống sẽ không thể sắp xếp được.

  • levelStatus(Required): Các trạng thái hiện tại của level (start, win, lose, quit)

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • userType(Optional): Loại user

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

Code mẫu:

GSM.Analytics.GSMAnalytics.LevelLog("1_1_1", GSM.Analytics.LevelTrackingStatus.start, group: "A", userType: "2", subGroup:"subA");//Khi bắt đầu vào 1 level
GSM.Analytics.GSMAnalytics.LevelLog("1_1_1", GSM.Analytics.LevelTrackingStatus.win, 20, "A", "2" ,"subA");//Khi win 1 level

GSM.Analytics.GSMAnalytics.LevelLog("1", GSM.Analytics.LevelTrackingStatus.start, group: "A", userType: "2", subGroup:"subA");//Khi bắt đầu vào 1 level
GSM.Analytics.GSMAnalytics.LevelLog("1", GSM.Analytics.LevelTrackingStatus.win, 20, "A", "2" ,"subA");//Khi win 1 level

Logic cơ bản:

  • Khi bắt đầu vào chơi ở một level thì levelStatus= start : Gửi log lên server và đánh dấu thời gian bắt đầu chơi ở level, để tính duration.

  • Tính duration: chỉ tính các thời gian khi user đang trong game, còn game bị dừng hoặc hoặc dừng để xem quảng cáo thì không tính.

  • Khi chiến thắng một level thì: chốt thời gian duration từ lúc start và gửi lên server với levelStatus= win (Nếu game không có logic win level thì bỏ qua). Đồng thời reset lại duration về 0.

  • Khi thua một level thì: chốt thời gian duration từ lúc start và gửi lên server với levelStatus= lose (Nếu game không có logic lose level thì bỏ qua). Đồng thời reset lại duration về 0

  • Khi user chủ động quít khỏi một level thì: chốt thời gian duration từ lúc start và gửi lên server với levelStatus= quit(Nếu game không có logic quit level thì bỏ qua). Đồng thời reset lại duration về 0

Lưu ý:

  • Nếu user chơi lại các level đã vượt qua rồi thì sẽ không gửi log lên gì cả.

3. Level Log cho Mini Game

  • Mục đích dùng để log dữ liệu level trong từng mini game trong 1 game chủ đạo.

  • Level này không liên quan đến level trong tiến trình của game chủ đạo

void LevelLogForMiniGame(string miniGameName, string levelName, LevelTrackingStatus levelStatus, int duration, string group = "", string userType = "", string subGroup = "", string mainLevel = "n/a")

Các tham số

  • miniGameName(Required): Tên của mini game, viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1" Nếu level dạng "1_1_1": tức có ngăn cách bằng thì tối đa chỉ có 3 cấp. Ví dụ: "1_1_1_1" sẽ là sai và hệ thống sẽ không thể sắp xếp được.

  • currentLevel(Required): Level hiện tại đang chơi, là chữ viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1"

  • levelStatus(Required): Các trạng thái hiện tại của level (start, win, lose, quit)

  • duration(Optional): Thời gian user bắt đầu start level cho đến khi win, lose, hoặc quit (Tính theo giây)

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • userType(Optional): Loại user

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

  • mainLevel(Optional): Là level hiện tại của trong tiến trình chính

Hoặc: SDK sẽ tự động tính duration.

void LevelLogForMiniGame(string miniGameName, string levelName, LevelTrackingStatus levelStatus, string group = "", string userType = "", string subGroup = "", string mainLevel = "n/a")

Các tham số

  • miniGameName(Required): Tên của mini game, viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1" Nếu level dạng "1_1_1": tức có ngăn cách bằng thì tối đa chỉ có 3 cấp. Ví dụ: "1_1_1_1" sẽ là sai và hệ thống sẽ không thể sắp xếp được.

  • currentLevel(Required): Level hiện tại đang chơi, là chữ viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1"

  • levelStatus(Required): Các trạng thái hiện tại của level (start, win, lose, quit)

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • userType(Optional): Loại user

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

  • mainLevel(Optional): Là level hiện tại của trong tiến trình chính

Code mẫu:

GSM.Analytics.GSMAnalytics.LevelLogForMiniGame("miniGame1","1_1_1", GSM.Analytics.LevelTrackingStatus.start, group: "A", userType: "2", subGroup: "",mainLevel:"1");//Khi bắt đầu vào 1 level
GSM.Analytics.GSMAnalytics.LevelLogForMiniGame("miniGame1","1_1_1", GSM.Analytics.LevelTrackingStatus.win, "A", "2",mainLevel:"1");//Khi win 1 level
GSM.Analytics.GSMAnalytics.LevelLogForMiniGame("miniGame1","1_1_1", GSM.Analytics.LevelTrackingStatus.start, group: "A", userType: "2", subGroup: "",mainLevel:"1");//Khi bắt đầu vào 1 level
GSM.Analytics.GSMAnalytics.LevelLogForMiniGame("miniGame1","1_1_1", GSM.Analytics.LevelTrackingStatus.lose, "A", "2",mainLevel:"1");//Khi level đó bị thua
GSM.Analytics.GSMAnalytics.LevelLogForMiniGame("miniGame1","1_1_1", GSM.Analytics.LevelTrackingStatus.start, group: "A", userType: "2", subGroup: "",mainLevel:"1");//Khi bắt đầu vào 1 level
GSM.Analytics.GSMAnalytics.LevelLogForMiniGame("miniGame1","1_1_1", GSM.Analytics.LevelTrackingStatus.quit, "A", "2",mainLevel:"1");//Khi user quit khỏi level

Logic cơ bản:

  • Khi bắt đầu vào chơi ở một level thì levelStatus= start : Gửi log lên server và đánh dấu thời gian bắt đầu chơi ở level, để tính duration.

  • Tính duration: chỉ tính các thời gian khi user đang trong game, còn game bị dừng hoặc hoặc dừng để xem quảng cáo thì không tính.

  • Khi chiến thắng một level thì: chốt thời gian duration từ lúc start và gửi lên server với levelStatus= win (Nếu game không có logic win level thì bỏ qua). Đồng thời reset lại duration về 0.

  • Khi thua một level thì: chốt thời gian duration từ lúc start và gửi lên server với levelStatus= lose (Nếu game không có logic lose level thì bỏ qua). Đồng thời reset lại duration về 0

  • Khi user chủ động quít khỏi một level thì: chốt thời gian duration từ lúc start và gửi lên server với levelStatus= quit(Nếu game không có logic quit level thì bỏ qua). Đồng thời reset lại duration về 0

Lưu ý:

  • Nếu user chơi lại các level đã vượt qua rồi thì sẽ không gửi log lên gì cả.

4. Task Quest Log

  • Gọi mỗi khi user thực hiện 1 task/quest nào đó

public static void TaskQuestLog(string targetLevel, string taskName, int taskPriority, TaskQuestStatus status, int duration, string group = "", string userType = "", string subGroup = "")

Các tham số

  • targetLevel(Required): Là level tiếp theo của level cao nhất đã vượt qua, chỉ viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1" Nếu level dạng "1_1_1": tức có ngăn cách bằng thì tối đa chỉ có 3 cấp. Ví dụ: "1_1_1_1" sẽ là sai và hệ thống sẽ không thể sắp xếp được.

  • taskName(Required): Là tên của Task/Quest, nên có tiền tố ở đầu là số, để dễ dàng sắp xếp thứ tự task.

  • taskPriority(Required): Là thứ tự của task, để sắp xếp task theo thứ tự tăng dần, nếu các task cùng priority thì sẽ dựa vào taskName để sắp xếp. (Mặc định taskPriority=0).

  • status(Required): Là trạng thái của task/quest (start, done).

  • duration(Optional): Là thời gian user sử dụng tính từ lúc start đến done một Task/Quest (Tính theo giây)

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • userType(Optional): Loại user

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

Hoặc: SDK tự động tính duration

  • Gọi mỗi khi user thực hiện 1 task/quest nào đó

public static void TaskQuestLog(string targetLevel, string taskName, int taskPriority, TaskQuestStatus status, string group = "", string userType = "", string subGroup = "")

Các tham số

  • targetLevel(Required): Là level tiếp theo của level cao nhất đã vượt qua, chỉ viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1" Nếu level dạng "1_1_1": tức có ngăn cách bằng thì tối đa chỉ có 3 cấp. Ví dụ: "1_1_1_1" sẽ là sai và hệ thống sẽ không thể sắp xếp được.

  • taskName(Required): Là tên của Task/Quest, nên có tiền tố ở đầu là số, để dễ dàng sắp xếp thứ tự task.

  • taskPriority(Required): Là thứ tự của task, để sắp xếp task theo thứ tự tăng dần, nếu các task cùng priority thì sẽ dựa vào taskName để sắp xếp. (Mặc định taskPriority=0).

  • status(Required): Là trạng thái của task/quest (start, candone, done).

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • userType(Optional): Loại user

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

Code mẫu:

GSM.Analytics.GSMAnalytics.TaskQuestLog("3", "q_1", 1, GSM.Analytics.TaskQuestStatus.start, group: "A", userType: "2"); //Khi bắt đầu 1 task/quest
GSM.Analytics.GSMAnalytics.TaskQuestLog("3", "q_1", 1, GSM.Analytics.TaskQuestStatus.candone, group: "A", userType: "2"); //Khi task/quest có thể hoàn thành thì client gửi trạng thái này
GSM.Analytics.GSMAnalytics.TaskQuestLog("3", "q_1", 1, GSM.Analytics.TaskQuestStatus.done, 240, "A", "2"); //Khi hoàn thành task/quest
// Hoặc nếu không có group
GSM.Analytics.GSMAnalytics.TaskQuestLog("3", "q_1", 1, GSM.Analytics.TaskQuestStatus.start, group: "", userType: "2"); //Khi bắt đầu 1 task/quest
GSM.Analytics.GSMAnalytics.TaskQuestLog("3", "q_1", 1, GSM.Analytics.TaskQuestStatus.candone, group: "", userType: "2"); //Khi task/quest có thể hoàn thành thì client gửi trạng thái này
GSM.Analytics.GSMAnalytics.TaskQuestLog("3", "q_1", 1, GSM.Analytics.TaskQuestStatus.done, 240, "", "2"); //Khi hoàn thành task/quest

// Hoặc SDK tự tính duration
GSM.Analytics.GSMAnalytics.TaskQuestLog("3", "q_1", 1, GSM.Analytics.TaskQuestStatus.start, group: "", userType: "2"); //Khi bắt đầu 1 task/quest
GSM.Analytics.GSMAnalytics.TaskQuestLog("3", "q_1", 1, GSM.Analytics.TaskQuestStatus.candone, group: "", userType: "2"); //Khi task/quest có thể hoàn thành thì client gửi trạng thái này
GSM.Analytics.GSMAnalytics.TaskQuestLog("3", "q_1", 1, GSM.Analytics.TaskQuestStatus.done, "", "2"); //Khi hoàn thành task/quest

5. Resource Log

  • Gọi mỗi khi user nhận được/sử dụng tài nguyên trong game.

public static void ResourceLog(string targetLevel, FlowType flowType, string currency, string source, string sourceDetail, long amount, string group = "", string userType = "", string subGroup = "")

Các tham số

  • targetLevel(Required): Là level tiếp theo của level cao nhất đã vượt qua, chỉ viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1" Nếu level dạng "1_1_1": tức có ngăn cách bằng thì tối đa chỉ có 3 cấp. Ví dụ: "1_1_1_1" sẽ là sai và hệ thống sẽ không thể sắp xếp được.

  • flowType (Required): User nhận/sử dụng tài nguyên (FlowType.earn - nhận, FlowType.spend - sử dụng).

  • currency(Required): Tên loại tài nguyên user nhận/sử dụng (gem, gold, coin...)

  • source (Optional): Nguồn nhận/sử dụng tài nguyên(khái quát). Nếu không có thì để rỗng.

  • sourceDetail (Required): Nguồn nhận/sử dụng tài nguyên (chi tiết)

  • amount (Required): Số lượng tài nguyên mà user nhận/sử dụng

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • userType(Optional): Loại user

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

Code mẫu:

//Spend Gem        
GSM.Analytics.GSMAnalytics.ResourceLog("3", GSM.Analytics.FlowType.spend, "gem", "map_1", "buy_item_t_01", 5, "A", "2");

//Earn Gem        
GSM.Analytics.GSMAnalytics.ResourceLog("3", GSM.Analytics.FlowType.earn, "gem", "map_1", "ads_relax", 5, "A", "2");

//Spend Energy        
GSM.Analytics.GSMAnalytics.ResourceLog("3", GSM.Analytics.FlowType.spend, "energy", "map_1", "r_04", 6, "A", "2");

//Earn Energy        
GSM.Analytics.GSMAnalytics.ResourceLog("3", GSM.Analytics.FlowType.earn, "energy", "map_1", "r_46", 50, "A", "2");

//Spend Coin        
GSM.Analytics.GSMAnalytics.ResourceLog("3", GSM.Analytics.FlowType.spend, "coin", "map_1", "decoration_d_03", 200, "A", "2");

//Earn Coin        
GSM.Analytics.GSMAnalytics.ResourceLog("3", GSM.Analytics.FlowType.earn, "coin", "map_1", "b_2", 20, "A", "2");

6. Ads Log

  • Dùng để Log khi user xem thành công, thường phục vụ cho loại Ad Reward

public static void AdsLog(string targetLevel, AdType adType, string adWhere, string group = "", string userType = "", AdActionType actionType = AdActionType.view, string subGroup = "")

Các tham số

  • targetLevel(Required): Là level tiếp theo của level cao nhất đã vượt qua, chỉ viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1" Nếu level dạng "1_1_1": tức có ngăn cách bằng thì tối đa chỉ có 3 cấp. Ví dụ: "1_1_1_1" sẽ là sai và hệ thống sẽ không thể sắp xếp được.

  • adType(Required): Loại Ad (AdType.videoReward, AdType.interstitial, AdType.interstitialReward, AdType.banner, AdType.native, AdType.appOpenAd, AdType.collapsibleBanner, AdType.MREC, AdType.offerWall)

  • adWhere(Required): Địa điểm xem ad (xem trong shop, xem ở trong level để hồi sinh ...)

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • userType(Optional): Loại user

  • actionType(Optional): Để biết user hành động gì với Ad: Show, Click hoặc View

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

Code mẫu:

GSM.Analytics.GSMAnalytics.AdsLog("3", GSM.Analytics.AdType.videoReward, "pearl_gem", "A", "2");
//Hoặc không có group
GSM.Analytics.GSMAnalytics.AdsLog("3", GSM.Analytics.AdType.videoReward, "pearl_gem", "", "2");

7. AdImpression Log

  • Khi user hoàn thành 1 quảng cáo thì sẽ gửi thông tin này lên hệ thống GSM

  • Lưu ý: nên dùng CSCPlugin để đẩy AdImpressionLog cho cả Firebase, Adjust và GSM: Xem hướng dẫn

public static void AdImpressionLog(string targetLevel, string adPlatform, string adSource, string adType, double value, string group = "", string userType = "", string subGroup = "")

Hoặc:

 public static void AdImpressionLog(string targetLevel, AdPlatform adPlatform, string adSource, string adType, double value, string group = "", string userType = "", string subGroup = "")

Các tham số

  • targetLevel(Required): Là level tiếp theo của level cao nhất đã vượt qua, chỉ viết liền không dấu, và chỉ nên chứa số ví dụ: "15", hoặc "1_1_1" hoặc "1_1" Nếu level dạng "1_1_1": tức có ngăn cách bằng thì tối đa chỉ có 3 cấp. Ví dụ: "1_1_1_1" sẽ là sai và hệ thống sẽ không thể sắp xếp được.

  • adPlatform(Required): Là nền tảng cung cấp Ad (Ironsouce, AppLovin...)

  • adSource(Required): Là nhà cung cấp Ad (facebook,admob,vungle...)

  • adType(Required): Là loại định dạng ad

  • value(Required): Là số tiền ad mang lại (tính theo USD)

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • userType(Optional): Loại user

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

Code mẫu AppLovin (MAX SDK):

// Attach callbacks based on the ad format(s) you are using
MaxSdkCallbacks.Interstitial.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
MaxSdkCallbacks.Banner.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
MaxSdkCallbacks.MRec.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent;
private void OnAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo impressionData)
{
    if (impressionData != null) {
        double revenue = impressionData.Revenue;
        var impressionParameters = new[] {
        new Firebase.Analytics.Parameter("ad_platform", "AppLovin"),
        new Firebase.Analytics.Parameter("ad_source", impressionData.NetworkName),
        new Firebase.Analytics.Parameter("ad_unit_name", impressionData.AdUnitIdentifier),
        new Firebase.Analytics.Parameter("ad_format", impressionData.AdFormat),
        new Firebase.Analytics.Parameter("value", revenue),
        new Firebase.Analytics.Parameter("currency", "USD"), // All AppLovin revenue is sent in USD
        };
        Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_impression", impressionParameters);
        //Gửi lên GSM
        GSM.Analytics.GSMAnalytics.AdImpressionLog("3", GSM.Analytics.AdPlatform.Applovin, impressionData.NetworkName, impressionData.AdFormat, revenue, "A", "2");
    }
}

Code mẫu IronSource SDK:

private void ImpressionSuccessEvent(IronSourceImpressionData impressionData) {
    if (impressionData != null) {
        Firebase.Analytics.Parameter[] AdParameters = {
        new Firebase.Analytics.Parameter("ad_platform", "IronSource"),
        new Firebase.Analytics.Parameter("ad_source", impressionData.adNetwork),
        new Firebase.Analytics.Parameter("ad_unit_name", impressionData.getAdUnit),
        new Firebase.Analytics.Parameter("ad_format", impressionData.getInstanceName),
        new Firebase.Analytics.Parameter("currency","USD"),
        new Firebase.Analytics.Parameter("value", impressionData.getRevenue)
        };
        Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_impression", AdParameters);
        //Gửi lên GSM
        GSM.Analytics.GSMAnalytics.AdImpressionLog("3", GSM.Analytics.AdPlatform.Ironsource, impressionData.adNetwork, impressionData.getAdUnit, impressionData.getRevenue, "A", "2");
    }
}

8. Funnel Log

  • Là log để vẽ biểu đồ phễu lọc, xem tỉ lệ các user chơi qua từng phễu sẽ là bao nhiêu

public static void FunnelLog(string funnelName, int priority, string actionName = "", string group = "", string subGroup = "", string userType = "")

Các tham số

  • funnelName(Required): Tên biểu đồ phễu.

  • priority(Required):Thứ tự của các action

  • actionName(Required): Tên các hành động, hoặc bước mà user thực hiện trong 1 biểu đồ phễu, và phải là tên duy nhất không được trùng nhau

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

  • userType(Optional): Loại user

Code mẫu:

GSM.Analytics.GSMAnalytics.FunnelLog("tutorial_funnel", 1, "step 1", "A");
GSM.Analytics.GSMAnalytics.FunnelLog("tutorial_funnel", 2, "step 2", "A");
GSM.Analytics.GSMAnalytics.FunnelLog("tutorial_funnel", 3, "step 3", "A");
GSM.Analytics.GSMAnalytics.FunnelLog("tutorial_funnel", 4, "step 4", "A");
GSM.Analytics.GSMAnalytics.FunnelLog("tutorial_funnel", 5, "step 5", "A");
GSM.Analytics.GSMAnalytics.FunnelLog("tutorial_funnel", 6, "step 6", "A");

9. Counter Log

  • Mục đích để đếm số lần hoặc 1 giá trị số của 1 tham số nào đó.

  • Ví dụ: Dùng để gửi lên thời gian chơi ở màn hình 1.

  • Ví dụ: Dùng để gửi lên số lần click vào nút shoping

void CounterLog(CounterItem[] counters, string counterType, string group = "", string subGroup = "", string userType = "",string mainLevel="")

Các tham số

  • counters(Required): Danh sách các tham số và giá trị số cần log.

  • counterType (Required): Tên loại counter để theo dõi

  • group(Optional): Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...

  • subGroup(Optional): Tên nhóm, tương tự group nhưng ở quy mô nhỏ hơn

  • userType(Optional): Loại user

  • mainLevel(Optional): Là giá trị level ở hiện tại mà user đang chơi.

Code mẫu:

 GSM.Analytics.GSMAnalytics.CounterLog(new CounterItem[] {
     new CounterItem("0.Show",1),
     new CounterItem("1.Quit",1),
     new CounterItem("2.ClickBuy",1),
     new CounterItem("3.Success",1),
     new CounterItem("4.Failed",1),
     new CounterItem("4.0PurchasingUnavailable",5),
     new CounterItem("4.1ExistingPurchasePending",2),
     new CounterItem("4.2ProductUnavailable",2)
 }, "inapp_tracking", "auto", "pigy_bank", "3", "7");
  • Phía game có thể gom hết các giá trị sau đó gửi 1 lần, hoặc cứ khi có 1 tham số nào cần log thì gửi lên cũng được.

  • Khuyến nghị nên gom lại sau đó gửi 1 lần để đỡ tải cho server

Last updated