Browse Source

feate:countly实现方式,web的SDK为同一方式

luoy 1 month ago
parent
commit
00c7310fb1

+ 3 - 1
README.md

@@ -4,4 +4,6 @@
   post-key值根据登录账号获取 phc_5YuF937Fs3N0djI4XFThsGAZfgaciU9pjKw6T3SQjvV
   post-host为默认发送到官网后台 https://us.posthog.com/
 
-#### 
+#### countly: https://support.countly.com/hc/en-us/articles/360037441932-Web-analytics-JavaScript
+
+#### 以上两种方式都需要注册账号获得服务器后台,替换key值后在官网后台查看埋点数据,付费后支持自定义部署

+ 20 - 3
main.html

@@ -9,9 +9,26 @@
   这是一个空页面
   <button id="btn">点击我</button>
 </body>
+<!--inside <head></head>-->
+<script type='text/javascript'>
+var Countly = Countly || {};
+Countly.q = Countly.q || [];
 
-<script>
-    !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
-    posthog.init('phc_5YuF937Fs3N0djI4XFThsGAZfgaciU9pjKw6T3SQjvV',{api_host:'https://us.i.posthog.com', defaults:'2025-05-24'})
+// server credentials 
+Countly.app_key = "YOUR_APP_KEY"; 
+Countly.url = "https://yourdomain.com";
+
+// Track sessions and page views automatically (recommended)
+Countly.q.push(['track_sessions']);
+Countly.q.push(['track_pageview']);
+
+// Load Countly script asynchronously
+(function() {
+  var cly = document.createElement('script'); cly.type = 'text/javascript';
+  cly.async = true;
+  cly.src = 'https://cdn.jsdelivr.net/npm/countly-sdk-web@latest/lib/countly.min.js';
+  cly.onload = function(){Countly.init()};
+  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(cly, s);
+})();
 </script>
 </html>

+ 7 - 47
react-test/package-lock.json

@@ -12,7 +12,7 @@
         "@testing-library/jest-dom": "^6.6.3",
         "@testing-library/react": "^16.3.0",
         "@testing-library/user-event": "^13.5.0",
-        "posthog-js": "^1.256.1",
+        "countly-sdk-web": "^25.4.1",
         "react": "^19.1.0",
         "react-dom": "^19.1.0",
         "react-scripts": "5.0.1",
@@ -5956,6 +5956,12 @@
         "node": ">=10"
       }
     },
+    "node_modules/countly-sdk-web": {
+      "version": "25.4.1",
+      "resolved": "https://registry.npmjs.org/countly-sdk-web/-/countly-sdk-web-25.4.1.tgz",
+      "integrity": "sha512-7xU6pZ42mp/kgu73cbUJMq3Kvk5RIofOIzOcrbSsxX/RnTcFjvYAly0H9tGi4FTcnPURXsfmuOcSpvK727h8Uw==",
+      "license": "MIT"
+    },
     "node_modules/cross-spawn": {
       "version": "7.0.6",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -8000,12 +8006,6 @@
         "bser": "2.1.1"
       }
     },
-    "node_modules/fflate": {
-      "version": "0.4.8",
-      "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
-      "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==",
-      "license": "MIT"
-    },
     "node_modules/file-entry-cache": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -13515,46 +13515,6 @@
       "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
       "license": "MIT"
     },
-    "node_modules/posthog-js": {
-      "version": "1.256.1",
-      "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.256.1.tgz",
-      "integrity": "sha512-cBLc3W1BHHzxYlJc6kIDbbPVUFTRbsObG0Cn1CnEG7lcyWKbalmW1XvUw7+lu/yyHYfCf7hwTTBJF7GgGFFMmw==",
-      "license": "SEE LICENSE IN LICENSE",
-      "dependencies": {
-        "core-js": "^3.38.1",
-        "fflate": "^0.4.8",
-        "preact": "^10.19.3",
-        "web-vitals": "^4.2.4"
-      },
-      "peerDependencies": {
-        "@rrweb/types": "2.0.0-alpha.17",
-        "rrweb-snapshot": "2.0.0-alpha.17"
-      },
-      "peerDependenciesMeta": {
-        "@rrweb/types": {
-          "optional": true
-        },
-        "rrweb-snapshot": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/posthog-js/node_modules/web-vitals": {
-      "version": "4.2.4",
-      "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz",
-      "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==",
-      "license": "Apache-2.0"
-    },
-    "node_modules/preact": {
-      "version": "10.26.9",
-      "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.9.tgz",
-      "integrity": "sha512-SSjF9vcnF27mJK1XyFMNJzFd5u3pQiATFqoaDy03XuN00u4ziveVVEGt5RKJrDR8MHE/wJo9Nnad56RLzS2RMA==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/preact"
-      }
-    },
     "node_modules/prelude-ls": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",

+ 1 - 1
react-test/package.json

@@ -7,7 +7,7 @@
     "@testing-library/jest-dom": "^6.6.3",
     "@testing-library/react": "^16.3.0",
     "@testing-library/user-event": "^13.5.0",
-    "posthog-js": "^1.256.1",
+    "countly-sdk-web": "^25.4.1",
     "react": "^19.1.0",
     "react-dom": "^19.1.0",
     "react-scripts": "5.0.1",

+ 12 - 7
react-test/src/index.js

@@ -3,17 +3,22 @@ import ReactDOM from 'react-dom/client';
 import './index.css';
 import App from './App';
 import reportWebVitals from './reportWebVitals';
-import { PostHogProvider } from 'posthog-js/react'
+import Countly from "countly-sdk-web";
+
+Countly.init({
+  // server credentials
+  app_key: "YOUR_APP_KEY",
+  url: "http://yourdomain.com"
+});
+
+// Track sessions and page views automatically (recommended)
+Countly.track_sessions();
+Countly.track_pageview();
 
 const root = ReactDOM.createRoot(document.getElementById('root'));
-const options = {
-  api_host: process.env.REACT_APP_POSTHOG_HOST,
-}
 root.render(
   <React.StrictMode>
-    <PostHogProvider apiKey={process.env.REACT_APP_POSTHOG_KEY} options={options}>
-      <App />
-    </PostHogProvider>
+    <App />
   </React.StrictMode>
 );
 

+ 7 - 47
vue-test/package-lock.json

@@ -9,7 +9,7 @@
       "version": "0.1.0",
       "dependencies": {
         "core-js": "^3.8.3",
-        "posthog-js": "^1.256.1",
+        "countly-sdk-web": "^25.4.1",
         "vue": "^3.2.13"
       },
       "devDependencies": {
@@ -4385,6 +4385,12 @@
         "node": ">=10"
       }
     },
+    "node_modules/countly-sdk-web": {
+      "version": "25.4.1",
+      "resolved": "https://registry.npmjs.org/countly-sdk-web/-/countly-sdk-web-25.4.1.tgz",
+      "integrity": "sha512-7xU6pZ42mp/kgu73cbUJMq3Kvk5RIofOIzOcrbSsxX/RnTcFjvYAly0H9tGi4FTcnPURXsfmuOcSpvK727h8Uw==",
+      "license": "MIT"
+    },
     "node_modules/cross-spawn": {
       "version": "7.0.6",
       "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -5872,12 +5878,6 @@
         "node": ">=0.8.0"
       }
     },
-    "node_modules/fflate": {
-      "version": "0.4.8",
-      "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
-      "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==",
-      "license": "MIT"
-    },
     "node_modules/figures": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz",
@@ -8977,40 +8977,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/posthog-js": {
-      "version": "1.256.1",
-      "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.256.1.tgz",
-      "integrity": "sha512-cBLc3W1BHHzxYlJc6kIDbbPVUFTRbsObG0Cn1CnEG7lcyWKbalmW1XvUw7+lu/yyHYfCf7hwTTBJF7GgGFFMmw==",
-      "license": "SEE LICENSE IN LICENSE",
-      "dependencies": {
-        "core-js": "^3.38.1",
-        "fflate": "^0.4.8",
-        "preact": "^10.19.3",
-        "web-vitals": "^4.2.4"
-      },
-      "peerDependencies": {
-        "@rrweb/types": "2.0.0-alpha.17",
-        "rrweb-snapshot": "2.0.0-alpha.17"
-      },
-      "peerDependenciesMeta": {
-        "@rrweb/types": {
-          "optional": true
-        },
-        "rrweb-snapshot": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/preact": {
-      "version": "10.26.9",
-      "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.9.tgz",
-      "integrity": "sha512-SSjF9vcnF27mJK1XyFMNJzFd5u3pQiATFqoaDy03XuN00u4ziveVVEGt5RKJrDR8MHE/wJo9Nnad56RLzS2RMA==",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/preact"
-      }
-    },
     "node_modules/prelude-ls": {
       "version": "1.2.1",
       "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -11091,12 +11057,6 @@
         "defaults": "^1.0.3"
       }
     },
-    "node_modules/web-vitals": {
-      "version": "4.2.4",
-      "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz",
-      "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==",
-      "license": "Apache-2.0"
-    },
     "node_modules/webidl-conversions": {
       "version": "3.0.1",
       "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",

+ 1 - 1
vue-test/package.json

@@ -9,7 +9,7 @@
   },
   "dependencies": {
     "core-js": "^3.8.3",
-    "posthog-js": "^1.256.1",
+    "countly-sdk-web": "^25.4.1",
     "vue": "^3.2.13"
   },
   "devDependencies": {

+ 12 - 5
vue-test/src/main.js

@@ -1,9 +1,16 @@
 import { createApp } from 'vue'
 import App from './App.vue'
-import posthog from "posthog-js";
 
-posthog.init("phc_5YuF937Fs3N0djI4XFThsGAZfgaciU9pjKw6T3SQjvV", {
-  api_host: "https://us.i.posthog.com",
-  defaults: '2025-05-24',
+import Countly from "countly-sdk-web";
+
+Countly.init({
+  // server credentials
+  app_key: "YOUR_APP_KEY",
+  url: "http://yourdomain.com"
 });
-createApp(App).provide("posthog", posthog).mount('#app')
+
+// Track sessions and page views automatically (recommended)
+Countly.track_sessions();
+Countly.track_pageview();
+
+createApp(App).mount('#app')

+ 0 - 11
vue-test/src/usePosthog.js

@@ -1,11 +0,0 @@
-// src/composables/usePostHog.ts
-import posthog from 'posthog-js'
-
-export function usePostHog() {
-  posthog.init('phc_5YuF937Fs3N0djI4XFThsGAZfgaciU9pjKw6T3SQjvV', {
-    api_host: 'https://us.i.posthog.com',
-    defaults: '2025-05-24',
-  })
-
-  return { posthog }
-}

+ 6 - 26
vue-test/yarn.lock

@@ -2401,7 +2401,7 @@ core-js-compat@^3.40.0, core-js-compat@^3.8.3:
   dependencies:
     browserslist "^4.25.0"
 
-core-js@^3.38.1, core-js@^3.8.3:
+core-js@^3.8.3:
   version "3.43.0"
   resolved "https://registry.npmmirror.com/core-js/-/core-js-3.43.0.tgz"
   integrity sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==
@@ -2422,6 +2422,11 @@ cosmiconfig@^7.0.0:
     path-type "^4.0.0"
     yaml "^1.10.0"
 
+countly-sdk-web@^25.4.1:
+  version "25.4.1"
+  resolved "https://registry.npmjs.org/countly-sdk-web/-/countly-sdk-web-25.4.1.tgz"
+  integrity sha512-7xU6pZ42mp/kgu73cbUJMq3Kvk5RIofOIzOcrbSsxX/RnTcFjvYAly0H9tGi4FTcnPURXsfmuOcSpvK727h8Uw==
+
 cross-spawn@^5.0.1:
   version "5.1.0"
   resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz"
@@ -3191,11 +3196,6 @@ faye-websocket@^0.11.3:
   dependencies:
     websocket-driver ">=0.5.1"
 
-fflate@^0.4.8:
-  version "0.4.8"
-  resolved "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz"
-  integrity sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==
-
 figures@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz"
@@ -4913,21 +4913,6 @@ postcss@^7.0.36:
     picocolors "^0.2.1"
     source-map "^0.6.1"
 
-posthog-js@^1.256.1:
-  version "1.256.1"
-  resolved "https://registry.npmjs.org/posthog-js/-/posthog-js-1.256.1.tgz"
-  integrity sha512-cBLc3W1BHHzxYlJc6kIDbbPVUFTRbsObG0Cn1CnEG7lcyWKbalmW1XvUw7+lu/yyHYfCf7hwTTBJF7GgGFFMmw==
-  dependencies:
-    core-js "^3.38.1"
-    fflate "^0.4.8"
-    preact "^10.19.3"
-    web-vitals "^4.2.4"
-
-preact@^10.19.3:
-  version "10.26.9"
-  resolved "https://registry.npmjs.org/preact/-/preact-10.26.9.tgz"
-  integrity sha512-SSjF9vcnF27mJK1XyFMNJzFd5u3pQiATFqoaDy03XuN00u4ziveVVEGt5RKJrDR8MHE/wJo9Nnad56RLzS2RMA==
-
 prelude-ls@^1.2.1:
   version "1.2.1"
   resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz"
@@ -5992,11 +5977,6 @@ wcwidth@^1.0.1:
   dependencies:
     defaults "^1.0.3"
 
-web-vitals@^4.2.4:
-  version "4.2.4"
-  resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz"
-  integrity sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==
-
 webidl-conversions@^3.0.0:
   version "3.0.1"
   resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz"