소스 검색

track events

baxi 4 일 전
부모
커밋
11198ce5bd

+ 9 - 0
assets/scripts/app/AppTrack.ts

@@ -0,0 +1,9 @@
+
+export enum AppTracks {
+    Registered = "CompleteRegistration",
+    AddToWishlist = "addtowishlist",
+    Purchased = "purchased",
+    Addtocart = "addtocart",
+}
+
+export type AppTracksType = typeof AppTracks;

+ 9 - 0
assets/scripts/app/AppTrack.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.24",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "6a14fdba-0406-43ea-8ccd-5392dd891086",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 1 - 1
assets/scripts/modules/lobby/ui/HomeView/HomeView.ts

@@ -280,7 +280,7 @@ export class HomeView extends UIView {
     }
 
     private onUserNodeClick() {
-
+        AppKernel.ui.open(UIViewID.UserInfoView);
     }
 
     private onGCModelClick() {

+ 1 - 1
assets/scripts/platform/FaceBook/FBH5Impl.ts

@@ -117,7 +117,7 @@ export class FBH5Impl extends FacebookImpl {
         });
     }
 
-    async logEvent(
+    async onLogEvent(
         eventName: string,
         parameters: IFBEventParams = {},
         valueToSum?: number,

+ 1 - 1
assets/scripts/platform/FaceBook/FBNativeImpl.ts

@@ -156,7 +156,7 @@ export class FBNativeImpl extends FacebookImpl {
         }
     }
 
-    async logEvent(
+    async onLogEvent(
         eventName: string,
         parameters: IFBEventParams = {},
         valueToSum?: number,

+ 38 - 5
assets/scripts/platform/FaceBook/FacebookImpl.ts

@@ -1,3 +1,5 @@
+import { AppTracks } from "@scripts/app/AppTrack";
+
 export interface IFBLoginRes {
     accessToken: string;
     /** SDK 返回的用户资料,仅用于展示;服务端仍需验证登录凭证。 */
@@ -28,6 +30,29 @@ export interface IFBShareRes {
     reason?: string;
 }
 
+const FBEventNames = {
+    AchievedLevel: "fb_mobile_level_achieved",
+    ActivatedApp: "fb_mobile_activate_app",
+    AddedPaymentInfo: "fb_mobile_add_payment_info",
+    AddedToCart: "fb_mobile_add_to_cart",
+    AddedToWishlist: "fb_mobile_add_to_wishlist",
+    CompletedRegistration: "fb_mobile_complete_registration",
+    CompletedTutorial: "fb_mobile_tutorial_completion",
+    InitiatedCheckout: "fb_mobile_initiated_checkout",
+    Purchased: "fb_mobile_purchase",
+    Rated: "fb_mobile_rate",
+    Searched: "fb_mobile_search",
+    SpentCredits: "fb_mobile_spent_credits",
+    UnlockedAchievement: "fb_mobile_achievement_unlocked",
+    ViewedContent: "fb_mobile_content_view",
+}
+
+const EventsMap = {
+    [AppTracks.Registered]: FBEventNames.CompletedRegistration,
+    [AppTracks.AddToWishlist]: FBEventNames.AddedToWishlist,
+    [AppTracks.Addtocart]: FBEventNames.AddedToCart,
+}
+
 export abstract class FacebookImpl {
     private _isInitialized = false;
 
@@ -37,6 +62,7 @@ export abstract class FacebookImpl {
 
     protected onInited() {
         this._isInitialized = true;
+        this.activeApp();
     }
 
     async login(): Promise<IFBLoginRes> {
@@ -50,11 +76,18 @@ export abstract class FacebookImpl {
 
     abstract share(options: IFBShareOptions): Promise<IFBShareRes>;
 
-    abstract logEvent(
-        eventName: string,
-        parameters?: IFBEventParams,
-        valueToSum?: number,
-    ): Promise<boolean>;
+    activeApp() {
+        this.logEvent(FBEventNames.ActivatedApp);
+    }
+
+    logEvent(eventName: string, parameters?: IFBEventParams, valueToSum?: number): Promise<boolean> {
+        const fbEvent = EventsMap[eventName]
+        if (!!fbEvent) {
+            return this.onLogEvent(fbEvent, parameters, valueToSum);
+        }
+    }
+
+    abstract onLogEvent(eventName: string, parameters?: IFBEventParams, valueToSum?: number): Promise<boolean>;
 
     abstract logPurchase(
         amount: number,

+ 3 - 2
assets/scripts/services/hall/HallClient.ts

@@ -2,6 +2,7 @@ import { trackEvent } from '@scripts/tracking/TrackEvents';
 import { AppKernel } from '../../app/AppKernel';
 import { APP_SERVER } from '../../define/Define';
 import { ColyseusRoomClient } from '../../network/colyseus/ColyseusRoomClient';
+import { AppTracks } from '@scripts/app/AppTrack';
 
 const CASH_BASE = 100;
 
@@ -124,7 +125,7 @@ class HallClient {
         // const payMessage = message as HallPayFinishMessage;
         const data = message.data;
         if (!!data && !!data.event) {
-          trackEvent('pay', data.params)
+          trackEvent(AppTracks.Purchased, data.params)
         }
         AppKernel.appLobby.onPaymentFinished();
         break;
@@ -135,7 +136,7 @@ class HallClient {
           const { data } = callMessage;
           switch (data.type) {
             case 'track':
-              trackEvent(data.event, data.params);
+              trackEvent(data.event as any, data.params);
               break;
 
             case 'refresh_mail':

+ 3 - 0
assets/scripts/store/mainStore/MainStore.ts

@@ -33,6 +33,8 @@ import {
     IWithdrawChannel,
 } from "./data";
 import { IGoogleLoginRes } from "@scripts/platform/Google/GoogleImpl";
+import { trackEvent } from "@scripts/tracking/TrackEvents";
+import { AppTracks } from "@scripts/app/AppTrack";
 
 const APP_OTP_INTERVAL = 60;
 
@@ -289,6 +291,7 @@ class MainStore {
         if (!!data.sign) localStorageSet(LOCAL_SIGN, data.sign);
         if (data.reg === 1) {
             // 新注册的
+            trackEvent(AppTracks.Registered, { external_id: data.UserID, event_id: "reg_" + data.UserID })
         }
     }
 

+ 5 - 2
assets/scripts/tracking/TrackEvents.ts

@@ -1,3 +1,6 @@
-export function trackEvent(eventName: string, params?: any) {
+import { AppKernel } from "@scripts/app/AppKernel"
+import { AppTracks } from "@scripts/app/AppTrack";
 
-}
+export function trackEvent(eventName: AppTracks, params?: any) {
+    AppKernel.fb.logEvent(eventName, params);
+}