gemercheung 2 years ago
parent
commit
56facad244

+ 1 - 1
packages/core/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "@medici/core",
   "name": "@medici/core",
-  "version": "0.1.1",
+  "version": "0.1.3",
   "main": "dist/index",
   "main": "dist/index",
   "types": "dist/index",
   "types": "dist/index",
   "files": [
   "files": [

+ 31 - 14
packages/core/src/basicTrack.ts

@@ -31,18 +31,28 @@ export class BaseTrack implements IBaseAction, ICustomAction {
     get trackUrl() {
     get trackUrl() {
         return this._endPoint + '/tracking/log/save';
         return this._endPoint + '/tracking/log/save';
     }
     }
+    get trackBeaconUrl() {
+        return this._endPoint + '/tracking/log/saveBeacon';
+    }
 
 
     get trackPageViewUrl() {
     get trackPageViewUrl() {
         return this._endPoint + '/tracking/log/save';
         return this._endPoint + '/tracking/log/save';
     }
     }
+    private cleanUnUsedKeys(trackObj) {
+        if (trackObj?.event) delete trackObj.event;
+        if (trackObj?.maxWaitTime) delete trackObj.maxWaitTime;
+        if (trackObj?.num) delete trackObj.num;
+    }
 
 
     private toTrackEntity(params: TrackEntityType): TrackEntityType {
     private toTrackEntity(params: TrackEntityType): TrackEntityType {
+        this.cleanUnUsedKeys(params.requestData);
         const entity = {
         const entity = {
             appId: this._appId,
             appId: this._appId,
             module: params.module,
             module: params.module,
             type: params.type,
             type: params.type,
             url: params.url || this._history.playload.url,
             url: params.url || this._history.playload.url,
             event: params.event,
             event: params.event,
+            num: this._config.num,
             referrer: params.referrer || this._history.currentRef,
             referrer: params.referrer || this._history.currentRef,
             requestData: params.requestData,
             requestData: params.requestData,
         };
         };
@@ -100,8 +110,9 @@ export class BaseTrack implements IBaseAction, ICustomAction {
         if (!this._stopTrack) {
         if (!this._stopTrack) {
             const historyPlayload = cloneDeep(this._history.playload);
             const historyPlayload = cloneDeep(this._history.playload);
             const trackObj = cloneDeep(trackActionOption);
             const trackObj = cloneDeep(trackActionOption);
-            delete trackObj.event;
-            delete trackObj.maxWaitTime;
+            // delete trackObj.event;
+            // delete trackObj.maxWaitTime;
+            this.cleanUnUsedKeys(trackObj);
 
 
             const payload: TrackEntityType = {
             const payload: TrackEntityType = {
                 module: trackActionName,
                 module: trackActionName,
@@ -112,13 +123,18 @@ export class BaseTrack implements IBaseAction, ICustomAction {
                 networkType: trackActionOption.networkType,
                 networkType: trackActionOption.networkType,
                 userId: this._config.user,
                 userId: this._config.user,
             };
             };
+            const plainObject = {
+                type: trackActionName,
+                payload: this.toTrackEntity(payload),
+            };
             // this.toTrackEntity(payload);
             // this.toTrackEntity(payload);
+            const sendData = JSON.stringify(plainObject);
             if ('sendBeacon' in navigator) {
             if ('sendBeacon' in navigator) {
-                const blob = new Blob([JSON.stringify(payload)], {
-                    type: 'application/json; charset=UTF-8',
+                const blob = new Blob([sendData], {
+                    type: 'text/plain',
                 });
                 });
-
-                const isSend = navigator.sendBeacon(this.trackUrl, blob);
+                SDK._trackBeaconPayload = sendData;
+                const isSend = navigator.sendBeacon(this.trackBeaconUrl, blob);
                 return Promise.resolve(isSend);
                 return Promise.resolve(isSend);
             }
             }
             return Promise.resolve(false);
             return Promise.resolve(false);
@@ -129,8 +145,9 @@ export class BaseTrack implements IBaseAction, ICustomAction {
         if (!this._stopTrack) {
         if (!this._stopTrack) {
             const historyPlayload = cloneDeep(this._history.playload);
             const historyPlayload = cloneDeep(this._history.playload);
             const trackObj = cloneDeep(trackActionOption);
             const trackObj = cloneDeep(trackActionOption);
-            delete trackObj.event;
-            delete trackObj.maxWaitTime;
+            // delete trackObj.event;
+            // delete trackObj.maxWaitTime;
+            this.cleanUnUsedKeys(trackObj);
 
 
             const payload: TrackEntityType = {
             const payload: TrackEntityType = {
                 module: trackActionName,
                 module: trackActionName,
@@ -151,9 +168,9 @@ export class BaseTrack implements IBaseAction, ICustomAction {
         if (!this._stopTrack) {
         if (!this._stopTrack) {
             const historyPlayload = cloneDeep(this._history.playload);
             const historyPlayload = cloneDeep(this._history.playload);
             const trackObj = cloneDeep(trackActionOption);
             const trackObj = cloneDeep(trackActionOption);
-            delete trackObj.event;
-            delete trackObj.maxWaitTime;
-
+            // delete trackObj.event;
+            // delete trackObj.maxWaitTime;
+            this.cleanUnUsedKeys(trackObj);
             const payload: TrackEntityType = {
             const payload: TrackEntityType = {
                 module: trackActionName,
                 module: trackActionName,
                 type: 'start_track',
                 type: 'start_track',
@@ -177,9 +194,9 @@ export class BaseTrack implements IBaseAction, ICustomAction {
         if (!this._stopTrack) {
         if (!this._stopTrack) {
             const historyPlayload = cloneDeep(this._history.playload);
             const historyPlayload = cloneDeep(this._history.playload);
             const trackObj = cloneDeep(trackActionOption);
             const trackObj = cloneDeep(trackActionOption);
-            delete trackObj.event;
-            delete trackObj.maxWaitTime;
-
+            // delete trackObj.event;
+            // delete trackObj.maxWaitTime;
+            this.cleanUnUsedKeys(trackObj);
             const payload: TrackEntityType = {
             const payload: TrackEntityType = {
                 module: trackActionName,
                 module: trackActionName,
                 type: 'end_track',
                 type: 'end_track',

+ 8 - 1
packages/core/src/sdk.ts

@@ -8,6 +8,7 @@ import { version } from '../package.json';
 export type PlatformType = 'web' | 'miniApp';
 export type PlatformType = 'web' | 'miniApp';
 
 
 export interface SDKInitConfig {
 export interface SDKInitConfig {
+    num: any;
     user?: string;
     user?: string;
     version?: string; //client version
     version?: string; //client version
 }
 }
@@ -26,7 +27,7 @@ export class SDK extends BaseTrack {
     protected _version: string;
     protected _version: string;
     public eventer = new Eventer(this);
     public eventer = new Eventer(this);
     public _history: IHistory;
     public _history: IHistory;
-
+    static _trackBeaconPayload: any;
     constructor(params: SDKConfigType) {
     constructor(params: SDKConfigType) {
         super(params);
         super(params);
         console.log('params.appId', params.appId);
         console.log('params.appId', params.appId);
@@ -45,6 +46,9 @@ export class SDK extends BaseTrack {
         return !BaseTrack._stopTrack;
         return !BaseTrack._stopTrack;
     }
     }
     public setConfig(config: SDKInitConfig): void {
     public setConfig(config: SDKInitConfig): void {
+        if (!this._config?.num) {
+            throw new Error('Medici are init fail,please fill the miss num params');
+        }
         this._config = Object.assign({ user: '', version: '' }, config);
         this._config = Object.assign({ user: '', version: '' }, config);
         super._config = this._config;
         super._config = this._config;
     }
     }
@@ -55,4 +59,7 @@ export class SDK extends BaseTrack {
     public resume(): void {
     public resume(): void {
         BaseTrack._stopTrack = false;
         BaseTrack._stopTrack = false;
     }
     }
+    public getTrackBeaconPayload(): any {
+        return SDK._trackBeaconPayload;
+    }
 }
 }

BIN
packages/legacy/dist.zip


+ 1 - 1
packages/types/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "@medici/types",
   "name": "@medici/types",
-  "version": "0.0.5",
+  "version": "0.0.6",
   "main": "dist/index",
   "main": "dist/index",
   "types": "dist/index",
   "types": "dist/index",
   "files": [
   "files": [

+ 1 - 0
packages/types/src/sdk.ts

@@ -13,6 +13,7 @@ export interface SDKconfigType {
 
 
 export interface TrackEntityType {
 export interface TrackEntityType {
     module: string;
     module: string;
+    num?: string;
     type: string;
     type: string;
     appId?: string;
     appId?: string;
     url?: string;
     url?: string;

+ 3 - 3
packages/utils/src/network.ts

@@ -27,10 +27,9 @@ export function getNetworkType(): string {
     const ua = navigator.userAgent;
     const ua = navigator.userAgent;
     const ut = (navigator as Navigator).connection as NetworkInformation;
     const ut = (navigator as Navigator).connection as NetworkInformation;
     let utt = ut ? (ut.type ? ut.type.toLowerCase() : ut.effectiveType.toLowerCase()) : null;
     let utt = ut ? (ut.type ? ut.type.toLowerCase() : ut.effectiveType.toLowerCase()) : null;
+
     if (utt) {
     if (utt) {
-        switch (
-            utt //bluetooth,
-        ) {
+        switch (utt) {
             case 'cellular':
             case 'cellular':
             case 'wimax':
             case 'wimax':
                 utt = ut ? (ut.effectiveType ? ut.effectiveType.toLowerCase() : null) : null;
                 utt = ut ? (ut.effectiveType ? ut.effectiveType.toLowerCase() : null) : null;
@@ -49,6 +48,7 @@ export function getNetworkType(): string {
                 break;
                 break;
         }
         }
     }
     }
+    console.log('utt', utt);
     let networkStr = utt ? utt : ua.match(/NetType\/\w+/) ? ua.match(/NetType\/\w+/)[0] : 'unknown';
     let networkStr = utt ? utt : ua.match(/NetType\/\w+/) ? ua.match(/NetType\/\w+/)[0] : 'unknown';
     networkStr = networkStr.toLowerCase().replace('nettype/', '');
     networkStr = networkStr.toLowerCase().replace('nettype/', '');
 
 

+ 5 - 10
play/index.html

@@ -5,17 +5,12 @@
         <link rel="icon" type="image/svg+xml" href="/vite.svg" />
         <link rel="icon" type="image/svg+xml" href="/vite.svg" />
         <meta name="viewport" content="width=device-width, initial-scale=1.0" />
         <meta name="viewport" content="width=device-width, initial-scale=1.0" />
         <title>Medici SDK</title>
         <title>Medici SDK</title>
-        <script async defer
-         data-app-id="7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999" 
-         data-url="/track_api"
-         src="https://allreally.oss-cn-shenzhen.aliyuncs.com/wasm/test_legacy/medici.js?v=111">
+        <script async defer data-app-id="7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999" data-url="/track_api" src="https://allreally.oss-cn-shenzhen.aliyuncs.com/wasm/test_legacy/medici.js?v=111"></script>
+        <script async defer data-app-id="7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999" data-url="/track_api" src="https://allreally.oss-cn-shenzhen.aliyuncs.com/wasm/test_legacy/medici.js?v=111"></script>
+        <script src="https://4dkk.4dage.com/v4-test/www/viewer/static/lib/vconsole.js"></script>
+        <script>
+            var vConsole = new window.VConsole();
         </script>
         </script>
-           <script async defer
-           data-app-id="7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999" 
-           data-url="/track_api"
-           src="https://allreally.oss-cn-shenzhen.aliyuncs.com/wasm/test_legacy/medici.js?v=111">
-          </script>
-        
 
 
         <!-- <script async defer data-website-id="7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999" src="http://192.168.0.186:3000/medici.js"></script> -->
         <!-- <script async defer data-website-id="7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999" src="http://192.168.0.186:3000/medici.js"></script> -->
     </head>
     </head>

+ 1 - 3
play/src/App.vue

@@ -10,14 +10,12 @@ const medici = Medici.init({
     endPoint: '/track_api', //服务器
     endPoint: '/track_api', //服务器
     stopTrack: false,
     stopTrack: false,
     config: {
     config: {
-        user: 'testUser',
-        version: '1',
+        num: 'xkxkxkxk',
     },
     },
 });
 });
 // console.log('medici', medici);
 // console.log('medici', medici);
 (window as any).medici = medici;
 (window as any).medici = medici;
 
 
-
 const test = async () => {
 const test = async () => {
     const res = await medici.track('BuyProduct', {
     const res = await medici.track('BuyProduct', {
         event: 'what',
         event: 'what',

+ 1 - 1
play/vite.config.ts

@@ -8,7 +8,7 @@ export default defineConfig({
         proxy: {
         proxy: {
             // with options
             // with options
             '/track_api': {
             '/track_api': {
-                target: 'https://test.4dkankan.com/',
+                target: 'http://192.168.0.146:8190/',
                 changeOrigin: true,
                 changeOrigin: true,
                 rewrite: (path) => path.replace(/^\/track_api/, ''),
                 rewrite: (path) => path.replace(/^\/track_api/, ''),
             },
             },