🇻🇳
Falcon SDK
Vietnamese
Vietnamese
  • Falcon Core
    • 1. Cấu hình và cài đặt
      • Về FalconMain và Init SDK
    • 2. RemoteConfig và AB Testing
      • a. Ví dụ Remote Config
      • b. Ví dụ về abTesting và remote config
      • c. Xem biểu đồ phân tích
    • 3. Tính năng Force Update
      • Sửa giao diện popup Force Update
    • 4. Lịch sử thay đổi
  • Falcon Analytics
    • 1. Các hàm Log cơ bản
    • 2. Các hàm log tự động
    • 3. Log tự định nghĩa
    • 4. FPlayerInfoRepo
    • 5. QnA
    • 6. Cài đặt Appsflyer or Adjust
    • 7. Lịch sử thay đổi
  • Falcon Mediation
    • 1. Cấu hình và cài đặt
    • 2. Network settings
    • 3. Hướng dẫn sử dụng
    • 4. Lịch sử thay đổi
  • Consent Management Platform (CMP)
    • 1. Trường hợp không sử dụng FalconMediation
    • 2. Trường hợp có sử dụng FalconMediation
    • 3. Lịch sử thay đổi
  • Hướng dẫn chung
    • Hướng dẫn log revenue lên Firebase, Appsflyer, Adjust
    • Hướng dẫn lấy Falcon Key (FKey)
    • Hướng dẫn thêm game
  • Giải thích biểu đồ
    • 📓Tổng quan
    • 🔢Level
    • 💰InApp
    • 💰InApp Cohort
    • ▶️Advertisement
    • 🔄Resources Overview
    • ⬆️Source
    • ⬇️Sink
    • ⏱️Session
    • 📶Retention
    • 📉Funnel
    • 💹Dynamic Chart
    • 🛃Custom Dashboard
    • 🔁Flow Chart
    • ✅Evaluate AB Campaign
  • SDK 2.1.x (bản cũ)
    • I. Cấu hình và cài đặt
    • II. Falcon Analytics
      • DwhLogCache
      • Falcon AB Testing
      • Các hàm log tự động
      • QnA
Powered by GitBook
On this page
  • 1. Khai báo Config
  • 2. Quy trình chạy của SDK
  • 3. Các hàm gọi cơ bản
  • 3.0. Lấy remoteConfig instance
  • 3.1. UpdatedFromNet
  • 3.2. RunningABTesting
  • 3.3. Truy cập các remoteConfig
  • 3.4. OnUpdateFromNet
  • 4. Các thay đổi trong bản 3.0.4
  • 4.1. Các trường Filter
  • 4.2. Thay đổi so với bản cũ
  1. Falcon Core

2. RemoteConfig và AB Testing

Sdk Core bản 3.0.4 cung cấp nhiều trường filter config hơn, nhiều tính năng hơn, đồng thời cách hoạt động cũng có phần khác, xem chi tiết tại mục 4

PreviousVề FalconMain và Init SDKNexta. Ví dụ Remote Config

Last updated 1 year ago

1. Khai báo Config

Để khởi tạo các Config sử dụng, người dùng cần phải tạo một lớp kế thừa abstract class FalconConfig, sau đó khai báo các attributes tượng trưng cho các remoteConfig đã khai báo từ server (có thể khai báo luôn các giá trị khởi tạo).

Trong ảnh trên, có thể thấy, ta khai báo các remoteConfig "config1" (int) và "config2"(String).

Chú ý:

  • Tên các remoteConfig, ở phía client khai báo trong class và khởi tạo phía server, phải tuyệt đối giống nhau.

  • Các remoteConfig cần có access modifier public.

  • Kiểu dữ liệu của các remoteConfig phải phù hợp (khai báo ở server là string thì client cũng phải là string, khai báo ở server là int thì client phải là int/long/..., etc), nếu giá trị được gửi tới client không phù hợp, khiến client không thể xử lý thì client sẽ bỏ giá trị này, không lưu lại.

  • Các config chỉ được có kiểu dữ liệu nguyên thủy (string, float, DateTime, Boolean), không thể gán giá trị phức tạp như Object, Array, List, ...

  • Việc khởi tạo các giá trị được thực hiện khi gọi FalconMain.Init(), đồng thời việc kết nối tới server để nhận giá trị mới nhất cần thời gian xử lý vì vậy cần kiểm tra giá trị FalconConfig.UpdateFromNet.

if (FalconConfig.UpdateFromNet == ExecState.Succeed)
{
    CustomConfig newestConfigFromServer = FalconConfig.Instance<CustomConfig>;
} else {
    CustomConfig defaultOrPreviousSessionConfig = FalconConfig.Instance<CustomConfig>;
}

2. Quy trình chạy của SDK

Khi chạy, phía SDK sẽ:

  • Nếu là lần chạy đầu tiên, lập tức sử dụng các giá trị khởi tạo (bên trên config1 = 5 và config2 = "ahihi do ngok").

  • Sau khi nhận được giá trị mới từ server, SDK sẽ lưu các giá trị mới lại và sử dụng giá trị này thay cho giá trị khởi tạo vào các lần chạy tiếp theo.

3. Các hàm gọi cơ bản

3.0. Lấy remoteConfig instance

Lấy instance của remote config bằng cách sử dụng hàm sau:

FalconConfig.Instance<<Tên class config>>();

VD: RealConfig config = FalconConfig.Instance<RealConfig>();

3.1. UpdatedFromNet

Cho biết các remoteConfig đã được cập nhật thành công từ server chưa, gồm 4 trạng thái cơ bản:

  • NotStarted: chưa bắt đầu thực hiện

  • Processing: đã bắt đầu thực hiện và đang xử lý

  • Succeed: đã xử lý thành công

  • Failed: xử lý thất bại

VD:

while (FalconConfig.UpdatedFromNet != ExecState.Succeed)
{
    Debug.Log("Giá trị của remoteConfig chưa cập nhật ._.");
    yield return null;
}

Debug.Log("Giá trị của remoteConfig đã được cập nhật ^w^");

3.2. RunningABTesting

Trả về id của ABTesting campain đang chạy.

VD:

Debug.Log( FalconConfig.RunningABTesting);

3.3. Truy cập các remoteConfig

Các giá trị của config được truy cập như các thuộc tính thông thường của class:

VD:

Debug.Log( FalconConfig.Instance<RealConfig>().config1);

Debug.Log( FalconConfig.Instance<RealConfig>().config2);

3.4. OnUpdateFromNet

[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
static void OnBeforeSplashScreen()
{
    FalconConfig.OnUpdateFromNet+= ((sender, args) => 
        Debug.Log("Log này sẽ được in ra màn hình ngay khi FalconConfig 
        cập nhật từ server xong nha <3"));
}

4. Các thay đổi trong bản 3.0.4

4.1. Các trường Filter

  • Các trường Filter cũ:

Tên
Lấy theo hàm
Mô tả

platform

FDeviceInfoRepo.Platform

android/ios/....

appversion

FDeviceInfoRepo.AppVersion

phiên bản hiện tại của người chơi

deviceName

FDeviceInfoRepo.DeviceName

tên thiết bị VD: "desktop-nrqdcnnrqdcn7"

firstLogin

FPlayerInfoRepo.FirstLogInMillis

Sdk gửi lên là timeMillis, trên server xử lý sẽ tự động chuyển sang date

level

FPlayerInfoRepo.MaxPassedLevel

Level tối đa mà người chơi đã vượt qua. Được cập nhật tự động nếu log level của Falcon Analytic

firstLoginDate

Được server chuyển từ firstLogin

Date theo UTC

country

Được xác định bên phía server

Theo country code ISO 3163166, gồm 2 ký tự viết hoa

(trường numberOfVideos đã bị loại bỏ)

  • Các trường Filter mới trong bản Core 3.0.4 gồm có:

Tên
Lấy theo hàm
Mô tả

deviceId

FDeviceInfoRepo.DeviceId

ID thiết bị VD: 969eff3f753e627ef1882beb94dd3d1c07095aac

deviceOs

FDeviceInfoRepo.DeviceOs

điều hành thiết bị VD: windows 11 (10.0.22631) 64bit

installVersion

FPlayerInfoRepo.InstallVersion

phiên bản người chơi cài game

accountId

FPlayerInfoRepo.AccountID

adLtv

FPlayerInfoRepo.Ad.AdLtv

Tổng LTV có được từ việc xem quảng cáo của người chơi, theo mệnh giá USD Được tổng hợp tự động nếu dùng AdLog có nhập adLtv của Falcon Analytic

interAdCount

FPlayerInfoRepo.Ad.AdCountOf(AdType.Interstitial)

Số lần người chơi xem quảng cáo inter Được tổng hợp tự động nếu dùng AdLog của Falcon Analytic

rewardAdCount

FPlayerInfoRepo.Ad.AdCountOf(AdType.Reward)

Số lần người chơi xem quảng cáo reward Được tổng hợp tự động nếu dùng AdLog của Falcon Analytic

inAppCount

FPlayerInfoRepo.InApp.InAppCount

Số lần người chơi thực hiện nạp inApp Được tổng hợp tự động nếu dùng InApp log của Falcon Analytic

inAppMax

FPlayerInfoRepo.InApp.InAppLtIv.max

Giá trị nạp inApp lớn nhất mà người chơi từng nạp, theo mệnh giá local Được tổng hợp tự động nếu dùng InApp log của Falcon Analytic

inAppMaxUsd

Được xác định bên phía server

Chuyển inAppMax từ mệnh giá Local sang USD

inAppTotal

FPlayerInfoRepo.InApp.InAppLtv.toal

Tổng nạp của người chơi, theo mệnh giá local Được tổng hợp tự động nếu dùng InApp log của Falcon Analytic

inAppTotalUsd

Được xác định bên phía server

Chuyển inAppTotal từ mệnh giá Local sang USD

inAppCurrency

FPlayerInfoRepo.InApp.InAppLtv.isoCurrencyCode

Mệnh giá nạp ở local của người chơi

retentionDay

FTime.DateSinceEpoch(FTime.CurrentTimeMillis()) - FTime.DateSinceEpoch(FPlayerInfoRepo.FirstLogInMillis)

  • Các trường Filter support nếu dùng FalconAnalytic 3.0.7 hoặc hơn:

Tên
Lấy theo hàm
Mô tả

firebaseToken

FalconFirebase.firebaseToken

token của Firebase, nếu game có sử dụng Firebase

advertisingId

FalconAdvertisingId.falconAdvertisingId

ID của cáo của thiết bị

4.2. Thay đổi so với bản cũ

Các giá trị của class kế thừa FalconConfig giờ được gán bằng việc sử dụng Json, việc này giúp cho về sau có thể gán giá trị 1 collection, array, object,... cho các trường trong class (bao giờ xong cái tính năng gán các giá trị phức tạp này chúng tôi sẽ thông báo và mở tính năng trên web, các bạn đỡ phải cập nhật SDK :>>>>>).

Tuy nhiên cũng vì thế mà class kế thừa FalconConfig, để gán giá trị tối ưu trong các trường hợp ( đặc biệt là với việc build IL2CPP) nên có các điều kiện sau:

  • Nếu muốn gán giá trị cho trường static thì cần có attribute [JsonProperty]

  • Các trường được gán giá trị cần để public (class có attribute [Serializable] càng tốt)

  • Các trường trong class có giá trị hợp lý với giá trị được khai báo ở server(cả 2 đều phải cùng là số/ cùng là string/ cùng là bool/...)

SDK sẽ ngay lập tức gửi yêu cầu lên server để lấy về các giá trị remoteConfig mới nhất (trong khoảng thời gian này các remoteConfig sẽ có giá trị là các giá trị khởi tạo). Khi server trả về thành công, các remoteConfig sẽ được reset giá trị (có thể kiểm tra giá trị trong config để biết config đã được cập nhật chưa).

Là EventHandler được gọi khi giá trị RemoteConfig được cập nhật về từ server thành công. Việc khởi tạo FalconConfig được gọi từ FalconMain.Init trước khi Scene đầu tiên load (chi tiết xem tại mục ) nên nếu muốn gán event cần sử dụng Attribute RuntimeInitializeOnLoadMethodvới các RuntimeInitializeLoadType trước BeforeSceneLoad.

FalconMain.Init
UpdatedFromNet