@thinkingai/ae-cli 1.0.30 → 6.0.16-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{auth-U25QJU5D.js → auth-DYC2BGLM.js} +2 -3
- package/dist/{auth-H3GJD55A.js → auth-GHBMJ5ZR.js} +33 -17
- package/dist/{chunk-CLJF7MQA.js → chunk-2DUEAXV3.js} +1 -1
- package/dist/{chunk-SF3KTPIC.js → chunk-5OC7CYCG.js} +2 -2
- package/dist/{chunk-SRJIAOBN.js → chunk-6W4QOZAL.js} +10 -0
- package/dist/{chunk-I42JGQ2J.js → chunk-BJX3GXWC.js} +3 -5
- package/dist/{chunk-GLNZSDKO.js → chunk-DMMEPCST.js} +4 -6
- package/dist/{chunk-VJFUB3H3.js → chunk-I5CRVM2S.js} +3 -3
- package/dist/{chunk-GSJGPNKK.js → chunk-PN3OS34E.js} +1 -1
- package/dist/{chunk-JM34JPCO.js → chunk-RSHMZ3LG.js} +178 -4
- package/dist/{client-IN42F223.js → client-2UJ63MVQ.js} +3 -4
- package/dist/{config-64G36TJL.js → config-NCUGK6NS.js} +3 -3
- package/dist/index.js +2530 -28
- package/dist/{model-VZCYNIOG.js → model-SJSOZTRS.js} +2 -2
- package/dist/{raw-WJIWC6YP.js → raw-7NVWSVJP.js} +5 -7
- package/dist/{sync-NVASAISS.js → sync-GRVO4K3U.js} +3 -3
- package/dist/{te-agent-YV4DXEXK.js → te-agent-KZRIEN4N.js} +468 -46
- package/dist/{te-analysis-CB3DA5I5.js → te-analysis-VAR4KUOK.js} +144 -29
- package/dist/{te-audience-W7SCQFC7.js → te-audience-KMKYI2YJ.js} +22 -15
- package/dist/{te-common-FBXVWBSI.js → te-common-WNCZB7R7.js} +4 -5
- package/dist/{te-community-LNVDZSGW.js → te-community-JEEFXPB3.js} +10 -11
- package/dist/{te-dataops-IPCSSWYH.js → te-dataops-GD3XBYCS.js} +11 -12
- package/dist/{te-engage-KARARMIR.js → te-engage-4XHCTS6I.js} +4 -5
- package/dist/{te-kb-2Z2CARN3.js → te-kb-B62KFP2A.js} +96 -8
- package/dist/{te-meta-PDKLMWXN.js → te-meta-EPZGQN56.js} +9 -10
- package/dist/{te-team-SW5B7DHO.js → te-team-YY24VORI.js} +6 -7
- package/dist/tracking/i18n/resources/cli/en.json +153 -0
- package/dist/tracking/i18n/resources/cli/ja.json +153 -0
- package/dist/tracking/i18n/resources/cli/ko.json +153 -0
- package/dist/tracking/i18n/resources/cli/zh.json +153 -0
- package/package.json +9 -3
- package/skills/ae-agent/SKILL.md +65 -25
- package/skills/ae-analysis/SKILL.md +108 -8
- package/skills/ae-analysis/references/cancel_query.md +39 -0
- package/skills/ae-analysis/references/drilldown_user_events.md +4 -2
- package/skills/ae-analysis/references/drilldown_users.md +4 -2
- package/skills/ae-analysis/references/get_bi_panel_detail.md +35 -0
- package/skills/ae-analysis/references/list_alerts.md +1 -1
- package/skills/ae-analysis/references/list_bi_panels.md +35 -0
- package/skills/ae-analysis/references/list_cluster_members.md +4 -1
- package/skills/ae-analysis/references/list_dashboards.md +1 -1
- package/skills/ae-analysis/references/list_entities.md +1 -1
- package/skills/ae-analysis/references/list_events.md +1 -1
- package/skills/ae-analysis/references/list_metrics.md +1 -1
- package/skills/ae-analysis/references/list_project_mark_times.md +1 -1
- package/skills/ae-analysis/references/list_properties.md +1 -1
- package/skills/ae-analysis/references/list_public_access_links.md +1 -1
- package/skills/ae-analysis/references/list_reports.md +1 -1
- package/skills/ae-analysis/references/list_tag_members.md +4 -1
- package/skills/ae-analysis/references/query_adhoc.md +6 -5
- package/skills/ae-analysis/references/query_bi_panel_data.md +58 -0
- package/skills/ae-analysis/references/query_dashboard_report_data.md +4 -1
- package/skills/ae-analysis/references/query_entity_details.md +5 -2
- package/skills/ae-analysis/references/query_event_details.md +4 -1
- package/skills/ae-analysis/references/query_report_data.md +2 -2
- package/skills/ae-analysis-global/SKILL.md +3 -1
- package/skills/ae-analysis-intent/SKILL.md +132 -0
- package/skills/ae-data-integration-helper/SKILL.md +242 -0
- package/skills/ae-data-integration-helper/references/android_sdk_faq.md +179 -0
- package/skills/ae-data-integration-helper/references/c_sdk_compilation.md +83 -0
- package/skills/ae-data-integration-helper/references/c_sdk_faq.md +416 -0
- package/skills/ae-data-integration-helper/references/cocoscreator_sdk_faq.md +123 -0
- package/skills/ae-data-integration-helper/references/cpp_server_sdk_faq.md +365 -0
- package/skills/ae-data-integration-helper/references/index.md +56 -0
- package/skills/ae-data-integration-helper/references/ios_sdk_faq.md +118 -0
- package/skills/ae-data-integration-helper/references/java_sdk_faq.md +406 -0
- package/skills/ae-data-integration-helper/references/javascript_sdk_faq.md +129 -0
- package/skills/ae-data-integration-helper/references/logbus2_guide.md +309 -0
- package/skills/ae-data-integration-helper/references/logbus2_parser_plugin.md +348 -0
- package/skills/ae-data-integration-helper/references/minigame_sdk_faq.md +115 -0
- package/skills/ae-data-integration-helper/references/miniprogram_sdk_faq.md +118 -0
- package/skills/ae-data-integration-helper/references/python_sdk_faq.md +232 -0
- package/skills/ae-data-integration-helper/references/restful_api_notes.md +74 -0
- package/skills/ae-data-integration-helper/references/sdk_log_guide.md +316 -0
- package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +107 -0
- package/skills/ae-data-integration-helper/references/unity_sdk_faq.md +115 -0
- package/skills/ae-generate-tracking-code/SKILL.md +629 -0
- package/skills/ae-generate-tracking-code/references/autotrack-enum.md +183 -0
- package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +202 -0
- package/skills/ae-generate-tracking-code/references/datax-config.md +43 -0
- package/skills/ae-generate-tracking-code/references/debug-script.md +102 -0
- package/skills/ae-generate-tracking-code/references/logbus-config.md +200 -0
- package/skills/ae-generate-tracking-code/references/modes.md +83 -0
- package/skills/ae-generate-tracking-code/references/restful-call.md +36 -0
- package/skills/ae-generate-tracking-code/references/sdk-index.md +128 -0
- package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +206 -0
- package/skills/ae-generate-tracking-code/references/snippet-delivery.md +394 -0
- package/skills/ae-generate-tracking-code/references/te-api.md +181 -0
- package/skills/ae-generate-tracking-plan/SKILL.md +1083 -0
- package/skills/ae-generate-tracking-plan/references/autotrack-events.md +273 -0
- package/skills/ae-generate-tracking-plan/references/business-dimension-mapping.md +425 -0
- package/skills/ae-generate-tracking-plan/references/te-api.md +100 -0
- package/skills/ae-generate-tracking-plan/references/xlsx-schema.md +152 -0
- package/skills/ae-kb/SKILL.md +38 -5
- package/tracking-plan-template/MMO/346/211/213/346/270/270/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +104 -0
- package/tracking-plan-template/MMO/346/211/213/346/270/270/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template/MMO/351/241/265/346/270/270/345/237/213/347/202/271/346/250/241/346/235/277_v2.md +117 -0
- package/tracking-plan-template/MMO/351/241/265/346/270/270/345/237/213/347/202/271/346/250/241/346/235/277_v2.xlsx +0 -0
- package/tracking-plan-template/RPG/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +72 -0
- package/tracking-plan-template/RPG/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template/SLG/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +86 -0
- package/tracking-plan-template/SLG/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template/Slots/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +80 -0
- package/tracking-plan-template/Slots/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template/TE /345/237/213/347/202/271/347/244/272/344/276/213/346/250/241/346/235/277.md" +40 -0
- package/tracking-plan-template/TE /345/237/213/347/202/271/347/244/272/344/276/213/346/250/241/346/235/277.xlsx +0 -0
- package/tracking-plan-template/TE/345/256/230/346/226/271/346/250/241/346/235/277_dataTrackSample.md +40 -0
- package/tracking-plan-template/TE/345/256/230/346/226/271/346/250/241/346/235/277_dataTrackSample.xlsx +0 -0
- package/tracking-plan-template//344/274/221/351/227/262/345/205/273/346/210/220/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v2.md +92 -0
- package/tracking-plan-template//344/274/221/351/227/262/345/205/273/346/210/220/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v2.xlsx +0 -0
- package/tracking-plan-template//345/215/241/347/211/214/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +119 -0
- package/tracking-plan-template//345/215/241/347/211/214/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//345/241/224/351/230/262/345/205/273/346/210/220/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_V1.md +130 -0
- package/tracking-plan-template//345/241/224/351/230/262/345/205/273/346/210/220/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_V1.xlsx +0 -0
- package/tracking-plan-template//345/276/256/344/277/241/345/260/217/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +52 -0
- package/tracking-plan-template//345/276/256/344/277/241/345/260/217/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//346/215/225/351/261/274/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +68 -0
- package/tracking-plan-template//346/215/225/351/261/274/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//346/224/276/347/275/256/347/261/273/345/215/241/347/211/214/346/270/270/346/210/217_/345/237/213/347/202/271/346/250/241/347/211/210v1.md +108 -0
- package/tracking-plan-template//346/224/276/347/275/256/347/261/273/345/215/241/347/211/214/346/270/270/346/210/217_/345/237/213/347/202/271/346/250/241/347/211/210v1.xlsx +0 -0
- package/tracking-plan-template//346/224/276/347/275/256/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +119 -0
- package/tracking-plan-template//346/224/276/347/275/256/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//346/243/213/347/211/214/347/261/273/357/274/210/346/226/227/345/234/260/344/270/273/357/274/211/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +63 -0
- package/tracking-plan-template//346/243/213/347/211/214/347/261/273/357/274/210/346/226/227/345/234/260/344/270/273/357/274/211/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//346/243/213/347/211/214/347/261/273/357/274/210/351/272/273/345/260/206/357/274/211/345/237/213/347/202/271/346/250/241/346/235/277_v2.md +101 -0
- package/tracking-plan-template//346/243/213/347/211/214/347/261/273/357/274/210/351/272/273/345/260/206/357/274/211/345/237/213/347/202/271/346/250/241/346/235/277_v2.xlsx +0 -0
- package/tracking-plan-template//347/224/265/345/225/206/345/237/213/347/202/271/346/226/271/346/241/210/346/250/241/346/235/277_v1.md +84 -0
- package/tracking-plan-template//347/224/265/345/225/206/345/237/213/347/202/271/346/226/271/346/241/210/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//347/237/255/345/211/247/344/272/247/345/223/201/345/237/213/347/202/271/346/226/271/346/241/210/346/250/241/346/235/277_v1.md +79 -0
- package/tracking-plan-template//347/237/255/345/211/247/344/272/247/345/223/201/345/237/213/347/202/271/346/226/271/346/241/210/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//347/244/276/344/272/244/350/201/212/345/244/251/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +105 -0
- package/tracking-plan-template//347/244/276/344/272/244/350/201/212/345/244/251/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//351/230/205/350/257/273/347/261/273APP/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +83 -0
- package/tracking-plan-template//351/230/205/350/257/273/347/261/273APP/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/wiki/te-docs/index.md +225 -0
- package/wiki/te-docs/raw/advanced-data-type/first-event-check.md +66 -0
- package/wiki/te-docs/raw/advanced-data-type/updated-event.md +87 -0
- package/wiki/te-docs/raw/advanced-data-type.md +16 -0
- package/wiki/te-docs/raw/data-ingestion-guide/about-gdpr.md +55 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/automatic-event-tracking.md +431 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/debugging-and-logging.md +49 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/multi-instance.md +66 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/preset-properties.md +466 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/third-party-integration.md +127 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced.md +513 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/release-notes.md +177 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android.md +228 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c/c-advanced.md +419 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c/release-notes.md +45 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c.md +110 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/client-side-sdk-faq.md +52 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp/cpp-advanced.md +366 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp/release-notes.md +103 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp.md +201 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/compliance.md +26 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/automatically-track-events.md +117 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/debugging-and-logging.md +47 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/preset-properties.md +52 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced.md +267 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/release-notes.md +82 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter.md +139 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/compliance.md +26 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/automatically-track-events.md +121 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/debugging-and-logging.md +54 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/preset-properties.md +18 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced.md +305 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/release-notes.md +79 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native.md +137 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/release-notes.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/automatically-track-events.md +54 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/debugging-and-logging.md +53 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/multi-instance.md +42 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/preset-properties.md +119 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/support-native.md +81 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced.md +331 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app.md +156 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform.md +12 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/automatic-event-tracking.md +29 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/debugging-and-logging.md +47 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/multi-instance.md +21 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/preset-properties.md +249 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced.md +301 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/release-notes.md +51 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x.md +281 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/automatic-event-tracking.md +70 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/debugging-and-logging.md +57 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/native-support.md +104 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/preset-properties.md +91 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance.md +374 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/compliance.md +35 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/release-notes.md +109 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator.md +170 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/compliance.md +28 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/automatic-event-tracking.md +29 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/debugging-and-logging.md +58 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/preset-properties.md +43 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced.md +204 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/release-notes.md +29 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona.md +269 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/release-notes.md +177 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/automatic-event-tracking.md +119 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/debugging-and-logging.md +47 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/multi-instance.md +50 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/native-pluggable.md +43 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/preset-properties.md +212 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/third-party-integration.md +77 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced.md +396 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity.md +176 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/release-notes.md +81 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/automatic-event-tracking.md +79 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/debugging-and-logging.md +31 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/preset-properties.md +25 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/third-party-integrations.md +141 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced.md +278 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal.md +190 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine.md +14 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/h5-and-app-sdk-connection.md +147 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/instant-app-and-game.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/automatic-event-tracking.md +272 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/debugging-and-logging.md +77 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/multi-instance.md +142 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/preset-properties.md +484 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/third-party-integrations.md +132 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced.md +682 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/release-notes.md +163 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios.md +304 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/compliance.md +29 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/automatic-event-tracking.md +136 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/debugging-and-logging.md +48 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/multi-instance.md +50 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/preset-properties.md +132 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced.md +462 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/release-notes.md +107 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript.md +208 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced/debugging-and-logging.md +62 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced/preset-properties.md +118 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced.md +556 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos.md +231 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk.md +25 -0
- package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/filebeat-logstash-user-guide.md +610 -0
- package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/logbus2-user-guide.md +1215 -0
- package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/ta-datax-writer-plugin-user-guide.md +278 -0
- package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools.md +15 -0
- package/wiki/te-docs/raw/data-ingestion-guide/privacy-policy.md +38 -0
- package/wiki/te-docs/raw/data-ingestion-guide/restful-api-user-guide.md +155 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging-FM9Cwz.md +37 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging-RSyfw7.md +41 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging.md +89 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties-OxzWw.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties-VuE3wr.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced-IauKwI.md +175 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced-YAilwk.md +210 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced.md +211 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes-PVazwa.md +62 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes-TADbwY.md +50 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes.md +69 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c-V2W3wv.md +131 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c-Zf9Jwl.md +179 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c.md +189 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced/debugging-and-logging.md +38 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced.md +113 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/release-notes.md +34 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang.md +155 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced/debugging-and-logging.md +42 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced.md +157 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/release-notes.md +72 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang.md +148 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced/debugging-and-logging.md +49 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced.md +223 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/release-notes.md +88 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java.md +174 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced/debugging-and-logging.md +46 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced.md +182 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/release-notes.md +61 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua.md +121 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced/debugging-and-logging.md +55 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced.md +225 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/release-notes.md +45 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs.md +141 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced/debugging-and-logging.md +41 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced.md +216 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/release-notes.md +45 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php.md +173 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced/debugging-and-logging.md +40 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced.md +206 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/release-notes.md +51 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python.md +116 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/release-notes.md +44 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced/debugging-and-logging.md +47 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced.md +189 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby.md +142 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk.md +22 -0
- package/wiki/te-docs/raw/data-ingestion-guide/thinkingdata-privacy-policy.md +37 -0
- package/wiki/te-docs/raw/data-ingestion-guide.md +48 -0
- package/wiki/te-docs/raw/preparations-before-data-ingestion/data-rules.md +396 -0
- package/wiki/te-docs/raw/preparations-before-data-ingestion/preset-properties-and-system-fields.md +957 -0
- package/wiki/te-docs/raw/preparations-before-data-ingestion/user-identification-rules.md +723 -0
- package/wiki/te-docs/raw/preparations-before-data-ingestion.md +203 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//345/220/210/350/247/204/346/214/207/345/215/227.md +96 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//346/233/264/346/226/260/346/227/245/345/277/227.md +97 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +52 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +48 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +447 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227.md +370 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony.md +172 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//345/220/210/350/247/204/346/214/207/345/215/227.md +37 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//346/233/264/346/226/260/346/227/245/345/277/227.md +209 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +71 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +49 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +125 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +498 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227.md +612 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217.md +373 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//345/220/210/350/247/204/346/214/207/345/215/227.md +26 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//346/233/264/346/226/260/346/227/245/345/277/227.md +32 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +48 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +30 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +61 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227.md +236 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua.md +200 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//346/233/264/346/226/260/346/227/245/345/277/227.md +83 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +66 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +62 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +358 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227.md +615 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret.md +166 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//346/233/264/346/226/260/346/227/245/345/277/227.md +87 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +71 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +61 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +406 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227.md +597 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair.md +179 -0
- package/wiki/te-docs/schema.md +16 -0
- package/wiki/te-docs/synthesis/batch-ingest-comparison.md +324 -0
- package/wiki/te-docs/synthesis/js-sdk-cheatsheet.md +538 -0
- package/wiki/te-docs/synthesis/restful-api-reference.md +363 -0
- package/wiki/te-docs/synthesis/sdk-selection.md +372 -0
- package/wiki/te-docs/synthesis/server-sdk-overview.md +449 -0
- package/dist/chunk-U6TKB3IV.js +0 -171
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: cpp_server_sdk_advanced
|
|
3
|
+
name: "C++-Advanced"
|
|
4
|
+
wikiToken: YAilwkzevi8lHekvnQ9cqPnrnzh
|
|
5
|
+
parentWikiToken: Zf9Jwl81biGtrbkmBhackD1Fn3c
|
|
6
|
+
updateTime: 1774249326000
|
|
7
|
+
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=cpp_server_sdk_advanced
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## **Sending Events**
|
|
11
|
+
After SDK is initialized, you can track user behaviour data. In general, ordinary events could meet business requirements. You can also use the First/Updatable Event based on your own business requirements.
|
|
12
|
+
### 1.1 **Ordinary Events**
|
|
13
|
+
You can call `track` to upload events. It is suggested that you set event properties based on the document about data tracking drafted previously. Procurement of a commodity by a user is taken as the example here:
|
|
14
|
+
```cpp
|
|
15
|
+
TDPropertiesNode event_properties;
|
|
16
|
+
event_properties.SetString("name1", "XZ_debug");
|
|
17
|
+
event_properties.SetString("name2", "logbugs");
|
|
18
|
+
event_properties.SetString("name3", "name3");
|
|
19
|
+
event_properties.SetString("#uuid", "1234567890");
|
|
20
|
+
event_properties.SetNumber("test_number_int", 3);
|
|
21
|
+
event_properties.SetNumber("test_number_double", 3.14);
|
|
22
|
+
event_properties.SetBool("test_bool", true);
|
|
23
|
+
std::string test_string = "test_string";
|
|
24
|
+
event_properties.SetString("test_stl_string1", test_string);
|
|
25
|
+
event_properties.SetDateTime("test_time1", time(nullptr), 0);
|
|
26
|
+
timeb t = {};
|
|
27
|
+
ftime(&t);
|
|
28
|
+
event_properties.SetDateTime("#time", t.time, t.millitm);
|
|
29
|
+
std::vector<std::string> test_list;
|
|
30
|
+
test_list.push_back("item11");
|
|
31
|
+
test_list.push_back("item21");
|
|
32
|
+
event_properties.SetList("test_list1", test_list);
|
|
33
|
+
|
|
34
|
+
// track event
|
|
35
|
+
te.track("accountId", "distinctId", "eventName", event_properties);
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 1.2 **First Events**
|
|
39
|
+
The First Events refers to events that would only be recorded once for the ID of a certain device or other dimensions. For example, under certain scenarios, you may want to record the activation event on a certain device. In this case, you can perform data tracking with the First Event.
|
|
40
|
+
If you want to judge whether an event is the First Event from other dimensions, you can define a first_check_id for the First Event:
|
|
41
|
+
```cpp
|
|
42
|
+
TDPropertiesNode event_properties;
|
|
43
|
+
// first event
|
|
44
|
+
event_properties.SetString("#first_check_id", "first_event");
|
|
45
|
+
te.track_first("accountId", "distinctId", "eventName", event_properties);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
<quote-container>
|
|
49
|
+
Note: Since the server has to check whether the event is the First Event, the First Event will be put in storage one hour later by default.
|
|
50
|
+
</quote-container>
|
|
51
|
+
|
|
52
|
+
### 1.3 ** Updatable Events**
|
|
53
|
+
You can meet the requirements for event data modification under specific scenarios through Updatable Event. The TE would determine the data to be updated according to the event name and event ID.
|
|
54
|
+
```cpp
|
|
55
|
+
// updatable event
|
|
56
|
+
std::string updateEventId = "update_001";
|
|
57
|
+
TDPropertiesNode update_event_properties;
|
|
58
|
+
update_event_properties.SetString("price", "100");
|
|
59
|
+
update_event_properties.SetString("status", "3");
|
|
60
|
+
// the value of "status" is 3, the value of "price" is 100
|
|
61
|
+
te.track_update("accountId", "distinctId", "eventName", updateEventId, update_event_properties);
|
|
62
|
+
|
|
63
|
+
TDPropertiesNode update_event_new_properties;
|
|
64
|
+
update_event_new_properties.SetString("status", "5");
|
|
65
|
+
// the value of "status" become 5, the value of "price" is still 100
|
|
66
|
+
te.track_update("accountId", "distinctId", "eventName", updateEventId, update_event_new_properties);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 1.4 **Overwritable Event****s**
|
|
70
|
+
Despite the similarity with Updatable Event, Overwritable Event would cover all historical data with the latest data. Looking from the perspective of effect, such a process is equivalent to the behavior of deleting the previous data while putting the latest data in storage. The TE would determine the data to be updated according to the event name and event ID.
|
|
71
|
+
```cpp
|
|
72
|
+
// overwrite event
|
|
73
|
+
std::string overWriteEventId = "overWrite_001";
|
|
74
|
+
TDPropertiesNode overWrite_event_properties;
|
|
75
|
+
overWrite_event_properties.SetString("money", "99");
|
|
76
|
+
overWrite_event_properties.SetString("code", "10");
|
|
77
|
+
// the value of "code" is 10, the value of "money" is 99
|
|
78
|
+
te.track_overwrite("accountId", "distinctId", "eventName", overWriteEventId, overWrite_event_properties);
|
|
79
|
+
|
|
80
|
+
TDPropertiesNode overWrite_event_new_properties;
|
|
81
|
+
overWrite_event_new_properties.SetString("money", "66");
|
|
82
|
+
// The "money" has changed to 66,The "code" will be deleted
|
|
83
|
+
te.track_overwrite("accountId", "distinctId", "eventName", overWriteEventId, overWrite_event_new_properties);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## **User Properties**
|
|
87
|
+
User property setting APIs supported by the TE include: `user_set`, `user_setOnce`, `user_add`, `user_append`, `user_uniqAppend`, `user_unset`, `user_delete`.
|
|
88
|
+
### 2.1 user_set
|
|
89
|
+
You can call `user_set` to set general user properties. The original properties would be replaced if the properties uploaded via the API are used. If user properties are not set before, user properties will be created. The type of newly-created user properties must conform to that of the uploaded properties. User name setting is taken as the example here:
|
|
90
|
+
```cpp
|
|
91
|
+
TDPropertiesNode userSet_properties;
|
|
92
|
+
userSet_properties.SetString("userName", "A");
|
|
93
|
+
// set user properties. the value of "userName" is "A"
|
|
94
|
+
te.user_set("accountId", "distinctId", userSet_properties);
|
|
95
|
+
|
|
96
|
+
userSet_properties.SetString("userName", "B");
|
|
97
|
+
// set user properties again,the value of "userName" will change to "B"
|
|
98
|
+
te.user_set("accountId", "distinctId", userSet_properties);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 2.2 user_setOnce
|
|
102
|
+
If the user property you want to upload only needs to be set once, you can call `user_setOnce` to set the property. If such property had been set before, this message would be ignored. Let's take the setting of the first payment time as an example:
|
|
103
|
+
```cpp
|
|
104
|
+
// user_setOnce
|
|
105
|
+
TDPropertiesNode userSetOnce_properties;
|
|
106
|
+
userSetOnce_properties.SetString("user_one_name", "A");
|
|
107
|
+
// create "user_one_name" property, and the value is "A"
|
|
108
|
+
te.user_setOnce("accountId", "distinctId", userSetOnce_properties);
|
|
109
|
+
|
|
110
|
+
userSetOnce_properties.SetString("user_one_name", "B");
|
|
111
|
+
// the value of "user_one_name" is still "A"
|
|
112
|
+
te.user_setOnce("accountId", "distinctId", userSetOnce_properties);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 2.3 user_add
|
|
116
|
+
When you want to upload numeric property for cumulative operation, you can call `user_add`.
|
|
117
|
+
If the property has not been set, it would be given a value of 0 before computing. A negative value could be uploaded, which is equivalent to subtraction operation. Let's take the accumulative payment amount as an example:
|
|
118
|
+
```cpp
|
|
119
|
+
// user_add
|
|
120
|
+
TDPropertiesNode userAdd_properties;
|
|
121
|
+
userAdd_properties.SetNumber("cash", 30);
|
|
122
|
+
// the value of "cash" is 30
|
|
123
|
+
te.user_add("accountId", "distinctId", userAdd_properties);
|
|
124
|
+
|
|
125
|
+
userAdd_properties.SetNumber("cash", 60);
|
|
126
|
+
// set user properties again,the value of "cash" is 90 now
|
|
127
|
+
te.user_add("accountId", "distinctId", userAdd_properties);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
<quote-container>
|
|
131
|
+
The property key is a string, and the value is only allowed to be a numeric value.
|
|
132
|
+
</quote-container>
|
|
133
|
+
|
|
134
|
+
### 2.4 user_append
|
|
135
|
+
You can call `user_append` to add user properties of array type.
|
|
136
|
+
```cpp
|
|
137
|
+
// user_append
|
|
138
|
+
TDPropertiesNode userAppend_properties;
|
|
139
|
+
std::vector<std::string> userAppendListValue;
|
|
140
|
+
userAppendListValue.push_back("11");
|
|
141
|
+
userAppendListValue.push_back("33");
|
|
142
|
+
userAppend_properties.SetList("arr1", userAppendListValue);
|
|
143
|
+
// the value of "arr1" is ["11", "33"]
|
|
144
|
+
te.user_append("accountId", "distinctId", userAppend_properties);
|
|
145
|
+
|
|
146
|
+
TDPropertiesNode userAppend_properties_new;
|
|
147
|
+
std::vector<std::string> userAppendListValueNew;
|
|
148
|
+
userAppendListValueNew.push_back("22");
|
|
149
|
+
userAppendListValueNew.push_back("33");
|
|
150
|
+
userAppend_properties_new.SetList("arr1", userAppendListValueNew);
|
|
151
|
+
// the value of "arr1" is ["11", "33", "22", "33"]
|
|
152
|
+
te.user_append("accountId", "distinctId", userAppend_properties_new);
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 2.5 user_uniqAppend
|
|
156
|
+
You can delete duplicated user property by calling `user_uniqAppend` API. If you call `user_append` API, duplicated user property might not be deleted.
|
|
157
|
+
```cpp
|
|
158
|
+
// user_uniqAppend
|
|
159
|
+
TDPropertiesNode userAppend_properties;
|
|
160
|
+
std::vector<std::string> userAppendListValue;
|
|
161
|
+
userAppendListValue.push_back("11");
|
|
162
|
+
userAppendListValue.push_back("33");
|
|
163
|
+
userAppend_properties.SetList("arr1", userAppendListValue);
|
|
164
|
+
// the value of "arr1" is ["11", "33"]
|
|
165
|
+
te.user_uniqAppend("accountId", "distinctId", userAppend_properties);
|
|
166
|
+
|
|
167
|
+
TDPropertiesNode userAppend_properties_new;
|
|
168
|
+
std::vector<std::string> userAppendListValueNew;
|
|
169
|
+
userAppendListValueNew.push_back("22");
|
|
170
|
+
userAppendListValueNew.push_back("33");
|
|
171
|
+
userAppend_properties_new.SetList("arr1", userAppendListValueNew);
|
|
172
|
+
// the value of "arr1" is ["11", "33", "22"]
|
|
173
|
+
te.user_uniqAppend("accountId", "distinctId", userAppend_properties_new);
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 2.6 user_unset
|
|
177
|
+
When you need to clear the user properties of users, you can call `user_unset` to clear specific properties. `user_unset` would not create properties that have not been created in the cluster.
|
|
178
|
+
```cpp
|
|
179
|
+
// user_unset
|
|
180
|
+
TDPropertiesNode userUnset_properties;
|
|
181
|
+
userUnset_properties.SetNumber("userName", 0);
|
|
182
|
+
// the value of "userName" will be reset after executed "user_unset"
|
|
183
|
+
te.user_unset("accountId", "distinctId", userUnset_properties);
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### 2.7 user_del
|
|
187
|
+
You can call `user_del` to delete a user. After deleting the user, you would no longer be able to inquire about its user property, but could still query the events triggered by the user.
|
|
188
|
+
```cpp
|
|
189
|
+
te.user_del("accountId", "distinctId");
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
## **Other**
|
|
194
|
+
### 3.1 BatchConsumer
|
|
195
|
+
::: warning Notice
|
|
196
|
+
When the amount of data is too large or the network is abnormal, there is a risk of data loss. And it is not recommended to use it in a production environment
|
|
197
|
+
:::
|
|
198
|
+
Batches transmit data to the TE in real time, without the need for a transmission tool.
|
|
199
|
+
```cpp
|
|
200
|
+
TDBatchConsumer batchConsumer("APPID","SERVER_URL", 10);
|
|
201
|
+
TDAnalytics te(batchConsumer, true);
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Instruction on parameters:
|
|
205
|
+
- `APPID`: The APPID of your project, which can be found on the project management page of TE.
|
|
206
|
+
- `SERVER_URL`:
|
|
207
|
+
- If you are using a SaaS version, please check the receiver URL on this page
|
|
208
|
+
<image token="UKc5bUYQ5oKVk9xjgW6cS6DHn0c" width="1674" height="1318" align="center"/>
|
|
209
|
+
|
|
210
|
+
- If you use the private deployment version, you can customize the data tracking URL .
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: c_sdk_advanced
|
|
3
|
+
name: "C-Advanced"
|
|
4
|
+
wikiToken: IvaxwsdOwi8b3Ck84AzcXobtnDb
|
|
5
|
+
parentWikiToken: Er3owqC0UiRR21kCDgZcY4qJn3e
|
|
6
|
+
updateTime: 1774249245000
|
|
7
|
+
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=c_sdk_advanced
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## **Sending Events**
|
|
11
|
+
After SDK is initialized, you can track user behaviour data. In general, ordinary events could meet business requirements. You can also use the First/Updatable Event based on your own business requirements.
|
|
12
|
+
### 1.1 **Ordinary Events**
|
|
13
|
+
You can call `td_track` to upload events. It is suggested that you set event properties based on the document about data tracking drafted previously. Procurement of a commodity by a user is taken as the example here:
|
|
14
|
+
```c
|
|
15
|
+
TDProperties *properties = td_init_properties();
|
|
16
|
+
TD_ASSERT(TD_OK == td_add_string("product_name", "goods_name", strlen("goods_name"), properties));
|
|
17
|
+
|
|
18
|
+
TD_ASSERT(TD_OK == td_track("account_id", "distinct_id", "product_buy", properties, ta));
|
|
19
|
+
td_free_properties(properties);
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 1.2 **First Events**
|
|
23
|
+
The First Events refers to events that would only be recorded once for the ID of a certain device or other dimensions. For example, under certain scenarios, you may want to record the activation event on a certain device. In this case, you can perform data tracking with the First Event.
|
|
24
|
+
If you want to judge whether an event is the First Event from other dimensions, you can define a first_check_id for the First Event:
|
|
25
|
+
```c
|
|
26
|
+
TD_ASSERT(TD_OK == td_track_first_event("account_id", "distinct_id", "device_activation", "first_id", properties, ta));
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
<quote-container>
|
|
30
|
+
Note: Since the server has to check whether the event is the First Event, the First Event will be put in storage one hour later by default.
|
|
31
|
+
</quote-container>
|
|
32
|
+
|
|
33
|
+
### 1.3 ** Updatable Events**
|
|
34
|
+
You can meet the requirements for event data modification under specific scenarios through Updatable Event. The TE would determine the data to be updated according to the event name and event ID.
|
|
35
|
+
```c
|
|
36
|
+
TDProperties *properties = td_init_properties();
|
|
37
|
+
TD_ASSERT(TD_OK == td_add_int("price",100,properties));
|
|
38
|
+
TD_ASSERT(TD_OK == td_add_int("status",3,properties));
|
|
39
|
+
TD_ASSERT(TD_OK == td_track_update("account_id", "distinct_id", "UPDATABLE_EVENT", "event_id",properties, ta));
|
|
40
|
+
td_free_properties(properties);
|
|
41
|
+
|
|
42
|
+
TDProperties *new_properties = td_init_properties();
|
|
43
|
+
TD_ASSERT(TD_OK == td_add_int("status",5,new_properties));
|
|
44
|
+
TD_ASSERT(TD_OK == td_track_update("account_id", "distinct_id", "UPDATABLE_EVENT", "event_id",new_properties, ta));
|
|
45
|
+
td_free_properties(new_properties);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 1.4 **Overwritable Event****s**
|
|
49
|
+
Despite the similarity with Updatable Event, Overwritable Event would cover all historical data with the latest data. Looking from the perspective of effect, such a process is equivalent to the behavior of deleting the previous data while putting the latest data in storage. The TE would determine the data to be updated according to the event name and event ID.
|
|
50
|
+
```c
|
|
51
|
+
TDProperties *properties = td_init_properties();
|
|
52
|
+
TD_ASSERT(TD_OK == td_add_int("price",100,properties));
|
|
53
|
+
TD_ASSERT(TD_OK == td_add_int("status",3,properties));
|
|
54
|
+
TD_ASSERT(TD_OK == td_track_overwrite("account_id", "distinct_id", "OVERWRITE_EVENT", "event_id",properties, ta));
|
|
55
|
+
td_free_properties(properties);
|
|
56
|
+
|
|
57
|
+
TDProperties *new_properties = td_init_properties();
|
|
58
|
+
TD_ASSERT(TD_OK == td_add_int("status",5,new_properties));
|
|
59
|
+
TD_ASSERT(TD_OK == td_track_overwrite("account_id", "distinct_id", "OVERWRITE_EVENT", "event_id",new_properties, ta));
|
|
60
|
+
td_free_properties(new_properties);
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## **User Properties**
|
|
64
|
+
User property setting API supported by the TE include: `td_user_set`, `td_user_setOnce`, `td_user_add`, `td_user_append`, `td_user_uniq_append`, `td_user_unset`, `td_user_delete`.
|
|
65
|
+
### 2.1 td_user_set
|
|
66
|
+
You can call `td_user_set` to set general user properties. The original properties would be replaced if the properties uploaded via the API again. If user properties are not set before, user properties will be created. The type of newly-created user properties must conform to that of the uploaded properties. User name setting is taken as the example here:
|
|
67
|
+
```c
|
|
68
|
+
TDProperties *user_properties = td_init_properties();
|
|
69
|
+
TD_ASSERT(TD_OK == td_add_string("user_name", "TA", strlen("TA"), user_properties));
|
|
70
|
+
TD_ASSERT(TD_OK == td_user_set("account_id", "distinct_id", user_properties,ta));
|
|
71
|
+
td_free_properties(user_properties);
|
|
72
|
+
|
|
73
|
+
TDProperties *user_properties2 = td_init_properties();
|
|
74
|
+
TD_ASSERT(TD_OK == td_add_string("user_name", "TE", strlen("TE"), user_properties2));
|
|
75
|
+
TD_ASSERT(TD_OK == td_user_set("account_id", "distinct_id", user_properties2,ta));
|
|
76
|
+
td_free_properties(user_properties2);
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 2.2 td_user_setOnce
|
|
80
|
+
If the user property you want to upload only needs to be set once, you can call `td_user_setOnce` to set the property. If such property had been set before, this message would be ignored. Let's take the setting of the first payment time as an example:
|
|
81
|
+
```c
|
|
82
|
+
TDProperties *user_properties = td_init_properties();
|
|
83
|
+
TD_ASSERT(TD_OK == td_add_string("first_payment_time", "2018-01-01 01:23:45.678", strlen("2018-01-01 01:23:45.678"), user_properties));
|
|
84
|
+
TD_ASSERT(TD_OK == td_user_setOnce("account_id", "distinct_id", user_properties,ta));
|
|
85
|
+
td_free_properties(user_properties);
|
|
86
|
+
|
|
87
|
+
TDProperties *user_properties2 = td_init_properties();
|
|
88
|
+
TD_ASSERT(TD_OK == td_add_string("first_payment_time", "2018-12-31 01:23:45.678", strlen("2018-12-31 01:23:45.678"), user_properties2));
|
|
89
|
+
TD_ASSERT(TD_OK == td_user_setOnce("account_id", "distinct_id", user_properties2,ta));
|
|
90
|
+
td_free_properties(user_properties2);
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 2.3 td_user_add
|
|
94
|
+
When you want to upload numeric property for cumulative operation, you can call `td_user_add`.
|
|
95
|
+
If the property has not been set, it would be given a value of 0 before computing. A negative value could be uploaded, which is equivalent to subtraction operation. Let's take the accumulative payment amount as an example:
|
|
96
|
+
```c
|
|
97
|
+
TDProperties *user_properties = td_init_properties();
|
|
98
|
+
TD_ASSERT(TD_OK == td_add_int("total_revenue", 30, user_properties));
|
|
99
|
+
TD_ASSERT(TD_OK == td_user_add("account_id", "distinct_id", user_properties, ta));
|
|
100
|
+
td_free_properties(user_properties);
|
|
101
|
+
|
|
102
|
+
TDProperties *new_user_properties = td_init_properties();
|
|
103
|
+
TD_ASSERT(TD_OK == td_add_int("total_revenue",648 , new_user_properties));
|
|
104
|
+
TD_ASSERT(TD_OK == td_user_add("account_id", "distinct_id", new_user_properties, ta));
|
|
105
|
+
td_free_properties(new_user_properties);
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
<quote-container>
|
|
109
|
+
The property key is a string, and the value is only allowed to be a numeric value.
|
|
110
|
+
</quote-container>
|
|
111
|
+
|
|
112
|
+
### 2.4 td_user_append
|
|
113
|
+
You can call `td_user_append` to add user properties of array type.
|
|
114
|
+
```c
|
|
115
|
+
TDProperties *array_properties = td_init_properties();
|
|
116
|
+
TD_ASSERT(TD_OK == td_append_array("user_list", "apple", strlen("apple"), array_properties));
|
|
117
|
+
TD_ASSERT(TD_OK == td_append_array("user_list", "ball", strlen("ball"), array_properties));
|
|
118
|
+
TD_ASSERT(TD_OK == td_user_append("account_id", "distinct_id", array_properties, ta));
|
|
119
|
+
td_free_properties(array_properties);
|
|
120
|
+
|
|
121
|
+
TDProperties *new_array_properties = td_init_properties();
|
|
122
|
+
TD_ASSERT(TD_OK == td_append_array("user_list", "apple", strlen("apple"), new_array_properties));
|
|
123
|
+
TD_ASSERT(TD_OK == td_append_array("user_list", "cube", strlen("cube"), new_array_properties));
|
|
124
|
+
TD_ASSERT(TD_OK == td_user_append("account_id", "distinct_id", new_array_properties, ta));
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 2.5 td_user_uniq_append
|
|
128
|
+
You can delete duplicated user property by calling `td_user_uniq_append` API. If you call `td_user_uniq_append` API, duplicated user property will be merged.
|
|
129
|
+
```c
|
|
130
|
+
TDProperties *array_properties = td_init_properties();
|
|
131
|
+
TD_ASSERT(TD_OK == td_append_array("user_list", "apple", strlen("apple"), array_properties));
|
|
132
|
+
TD_ASSERT(TD_OK == td_append_array("user_list", "ball", strlen("ball"), array_properties));
|
|
133
|
+
TD_ASSERT(TD_OK == td_user_append("account_id", "distinct_id", array_properties, ta));
|
|
134
|
+
td_free_properties(array_properties);
|
|
135
|
+
|
|
136
|
+
TDProperties *new_array_properties = td_init_properties();
|
|
137
|
+
TD_ASSERT(TD_OK == td_append_array("user_list", "apple", strlen("apple"), new_array_properties));
|
|
138
|
+
TD_ASSERT(TD_OK == td_append_array("user_list", "cube", strlen("cube"), new_array_properties));
|
|
139
|
+
TD_ASSERT(TD_OK == td_user_uniq_append("account_id","distinct_id", new_array_properties, ta));
|
|
140
|
+
td_free_properties(new_array_properties);
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 2.6 td_user_unset
|
|
144
|
+
When you need to clear the user properties of users, you can call `td_user_unset` to clear specific properties. `td_user_unset` would not create properties that have not been created in the cluster.
|
|
145
|
+
```c
|
|
146
|
+
TD_ASSERT(TD_OK == td_user_unset("account_id", "distinct_id", "test", ta));
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 2.7 td_user_delete
|
|
150
|
+
You can call `td_user_delete` to delete a user. After deleting the user, you would no longer be able to inquire about its user property, but could still query the events triggered by the user.
|
|
151
|
+
```c
|
|
152
|
+
TD_ASSERT(TD_OK == td_user_delete("account_id", "distinct_id", ta));
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## **Other**
|
|
156
|
+
### 3.1 BatchConsumer
|
|
157
|
+
::: warning Notice
|
|
158
|
+
When the amount of data is too large or the network is abnormal, there is a risk of data loss. And it is not recommended to use it in a production environment
|
|
159
|
+
:::
|
|
160
|
+
Batches transmit data to the TE in real time, without the need for a transmission tool.
|
|
161
|
+
e.g. Modify the `CMakeLists.txt` file:
|
|
162
|
+
```bash
|
|
163
|
+
# Product Library: batch consumer
|
|
164
|
+
if(WIN32)
|
|
165
|
+
add_compile_definitions(USE_WIN)
|
|
166
|
+
set(CMAKE_C_FLAGS "-std=c99 -pedantic-errors -m64")
|
|
167
|
+
else()
|
|
168
|
+
add_compile_definitions(USE_POSIX)
|
|
169
|
+
set(CMAKE_C_FLAGS "-std=c99")
|
|
170
|
+
endif()
|
|
171
|
+
SET(TE_LIB_NAME thinkingDataBatch)
|
|
172
|
+
add_library(${TE_LIB_NAME} src/thinkingdata.c src/td_json.c src/td_list.c src/td_util.c src/td_batch_consumer.c src/td_http_client.c)
|
|
173
|
+
if(WIN32)
|
|
174
|
+
add_compile_definitions(BUILDING_LIBCURL)
|
|
175
|
+
include_directories(thirdparty/pcre/include thirdparty/curl/include)
|
|
176
|
+
link_directories(thirdparty/pcre/lib thirdparty/curl/lib)
|
|
177
|
+
target_link_libraries(${TE_LIB_NAME} pcre_x64 libcurl)
|
|
178
|
+
else()
|
|
179
|
+
target_link_libraries(${TE_LIB_NAME} curl)
|
|
180
|
+
endif()
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
```c
|
|
184
|
+
struct TDAnalytics* ta = NULL;
|
|
185
|
+
struct TDConsumer* consumer = NULL;
|
|
186
|
+
|
|
187
|
+
TDConfig *config = td_init_config();
|
|
188
|
+
|
|
189
|
+
char* appid = "APPID";
|
|
190
|
+
char* serverURL = "SERVER_URL";
|
|
191
|
+
TD_ASSERT(TD_OK == td_add_string("push_url", serverURL, strlen(serverURL), config));
|
|
192
|
+
TD_ASSERT(TD_OK == td_add_string("appid", appid, strlen(appid), config));
|
|
193
|
+
|
|
194
|
+
if (TD_OK != td_init_consumer(&consumer, config)) {
|
|
195
|
+
fprintf(stderr, "Failed to initialize the consumer.");
|
|
196
|
+
return 1;
|
|
197
|
+
}
|
|
198
|
+
td_free_properties(config);
|
|
199
|
+
if (TD_OK != td_init(consumer, &ta)) {
|
|
200
|
+
fprintf(stderr, "Failed to initialize the SDK.");
|
|
201
|
+
return 1;
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Instruction on parameters:
|
|
206
|
+
- `APPID`: The APPID of your project, which can be found on the project management page of TE.
|
|
207
|
+
- `SERVER_URL`:
|
|
208
|
+
- If you are using a SaaS version, please check the receiver URL on this page
|
|
209
|
+
<image token="Eg1QbzIeHoAQpOxlbJ6cRMydnYc" width="1674" height="1318" align="center"/>
|
|
210
|
+
|
|
211
|
+
- If you use the private deployment version, you can customize the data tracking URL .
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: cpp_server_sdk_release_note
|
|
3
|
+
name: "Release Notes"
|
|
4
|
+
wikiToken: PVazwaSPXiD22Nk4LlSc6gaHnjy
|
|
5
|
+
parentWikiToken: Zf9Jwl81biGtrbkmBhackD1Fn3c
|
|
6
|
+
updateTime: 1774249332000
|
|
7
|
+
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=cpp_server_sdk_release_note
|
|
8
|
+
---
|
|
9
|
+
## v2.0.0
|
|
10
|
+
**Date: 2023/11/30**
|
|
11
|
+
**Notes:**
|
|
12
|
+
- Release the official version
|
|
13
|
+
## v2.0.0-beta.1
|
|
14
|
+
**Date: 2023/10/08**
|
|
15
|
+
**Notes:**
|
|
16
|
+
- Enable new API, add 'TD' prefix to class name
|
|
17
|
+
- Not compatible with older SDK. You need to change the class name and namespace manually
|
|
18
|
+
## v1.2.8-beta.2
|
|
19
|
+
**Date: 2023/06/02**
|
|
20
|
+
**Notes:**
|
|
21
|
+
- Handle invalid iterators
|
|
22
|
+
## v1.2.8-beta.1
|
|
23
|
+
**Date: 2023/05/30**
|
|
24
|
+
**Notes:**
|
|
25
|
+
- Improve data writing efficiency
|
|
26
|
+
## v1.2.7
|
|
27
|
+
**Date: 2023/04/07**
|
|
28
|
+
**Notes:**
|
|
29
|
+
- Use thread instead of pthread
|
|
30
|
+
## v1.2.6
|
|
31
|
+
**Date: 2023/03/14**
|
|
32
|
+
**Notes:**
|
|
33
|
+
- Improve stability
|
|
34
|
+
## v1.2.5
|
|
35
|
+
**Date: 2023/02/24**
|
|
36
|
+
**Notes:**
|
|
37
|
+
- Clean up code
|
|
38
|
+
## v1.2.4
|
|
39
|
+
**Date: 2023/02/21**
|
|
40
|
+
**Notes:**
|
|
41
|
+
- Fix platform compatibility problems
|
|
42
|
+
## v1.2.3
|
|
43
|
+
**Date: 2023/02/16**
|
|
44
|
+
**Notes:**
|
|
45
|
+
- Clean up code
|
|
46
|
+
## v1.2.2
|
|
47
|
+
**Date: 2023/02/05**
|
|
48
|
+
**Notes:**
|
|
49
|
+
- Bugfix: uuid
|
|
50
|
+
## v1.2.1
|
|
51
|
+
**Date: 2023/01/11**
|
|
52
|
+
**Notes:**
|
|
53
|
+
- Bugfix: event report delays because of `bufferSize`
|
|
54
|
+
## v1.2.0
|
|
55
|
+
**Date: 2022/11/01**
|
|
56
|
+
**Notes:**
|
|
57
|
+
- Supports debug consumer
|
|
58
|
+
- Supports batch consumer
|
|
59
|
+
## v1.0.0
|
|
60
|
+
**Date: 2022/05/20**
|
|
61
|
+
**Notes:**
|
|
62
|
+
- Supports log_consumer
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: csharp_sdk_release_note
|
|
3
|
+
name: "Release Notes"
|
|
4
|
+
wikiToken: TADbwYQnKihuXJk2RlJco9tgn9f
|
|
5
|
+
parentWikiToken: V2W3wvcfkiGW3lk9rrDcnosAnqi
|
|
6
|
+
updateTime: 1774249302000
|
|
7
|
+
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=csharp_sdk_release_note
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## v2.0.3
|
|
11
|
+
**Date:** 2025/09/03
|
|
12
|
+
**Notes:**
|
|
13
|
+
- Improve SDK stability
|
|
14
|
+
## v2.0.2
|
|
15
|
+
**Date:** 2025/03/12
|
|
16
|
+
**Notes:**
|
|
17
|
+
- Improve SDK stability
|
|
18
|
+
## v2.0.1
|
|
19
|
+
**Date:** 2024/01/18
|
|
20
|
+
**Notes:**
|
|
21
|
+
- Use thread-level locks
|
|
22
|
+
## v2.0.0
|
|
23
|
+
**Date:** 2023/09/21
|
|
24
|
+
**Notes:**
|
|
25
|
+
- Add new API
|
|
26
|
+
## v1.5.2
|
|
27
|
+
**Date: **2023/04/03
|
|
28
|
+
**Notes:**
|
|
29
|
+
- Support .net and .net statandard 2.0
|
|
30
|
+
## v1.5.1
|
|
31
|
+
**Date:2022/11/09**
|
|
32
|
+
**Notes:**
|
|
33
|
+
- Support debug model in TE
|
|
34
|
+
## v1.5.0
|
|
35
|
+
**Date:2022/10/28**
|
|
36
|
+
**Notes:**
|
|
37
|
+
- Support log
|
|
38
|
+
- Support multiple projects
|
|
39
|
+
## v1.4.0
|
|
40
|
+
**Date:2022/05/06**
|
|
41
|
+
**Notes:**
|
|
42
|
+
- Support dynamic properties
|
|
43
|
+
- Support first event reporting
|
|
44
|
+
- add 'UserUniqAppend' type
|
|
45
|
+
- Support Object And Object Ggroup
|
|
46
|
+
- Upload event with asynchronous
|
|
47
|
+
## v1.3.1
|
|
48
|
+
**Date: 2021/04/22**
|
|
49
|
+
**Notes:**
|
|
50
|
+
- fixbug: LoggerConsumer write file failed
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: c_sdk_release_note
|
|
3
|
+
name: "Release Notes"
|
|
4
|
+
wikiToken: QQsgwkqk3iGHBMkYQDqc8ZcBnwf
|
|
5
|
+
parentWikiToken: Er3owqC0UiRR21kCDgZcY4qJn3e
|
|
6
|
+
updateTime: 1774249251000
|
|
7
|
+
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=c_sdk_release_note
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## v2.0.0
|
|
11
|
+
**Date: 2023/11/30**
|
|
12
|
+
**Notes:**
|
|
13
|
+
- Release the official version
|
|
14
|
+
## v2.0.0-beta.1
|
|
15
|
+
**Date: 2023/09/21**
|
|
16
|
+
**Notes:**
|
|
17
|
+
- Using the new api
|
|
18
|
+
## v1.3.7
|
|
19
|
+
**Date: 2023/09/21**
|
|
20
|
+
**Notes:**
|
|
21
|
+
- Release the official version
|
|
22
|
+
## v1.3.7-beta.1
|
|
23
|
+
**Date: 2023/04/23**
|
|
24
|
+
**Notes:**
|
|
25
|
+
- Tidy example program
|
|
26
|
+
- Tidy CMakeList.txt
|
|
27
|
+
- Improve compatibility
|
|
28
|
+
## v1.3.6
|
|
29
|
+
**Date: 2022/06/22**
|
|
30
|
+
**Notes:**
|
|
31
|
+
- Improve stability
|
|
32
|
+
## v1.3.5
|
|
33
|
+
**Date: 2022/05/16**
|
|
34
|
+
**Notes:**
|
|
35
|
+
- Supports debug_consumer
|
|
36
|
+
- Supports async_batch_consumer
|
|
37
|
+
- Add API: ta_user_uniq_append()
|
|
38
|
+
## v1.3.4
|
|
39
|
+
**Date: 2022/03/03**
|
|
40
|
+
**Notes:**
|
|
41
|
+
- Supports object group
|
|
42
|
+
## v1.3.3
|
|
43
|
+
**Date: 2022/02/08**
|
|
44
|
+
**Notes:**
|
|
45
|
+
- Fix bug: Possible duplicate name problems because of snprintf
|
|
46
|
+
## v1.3.2
|
|
47
|
+
**Date: 2021/11/23**
|
|
48
|
+
**Notes:**
|
|
49
|
+
- Optimize the snprintf function in windows
|
|
50
|
+
## v1.3.1
|
|
51
|
+
**Date: 2021/11/10**
|
|
52
|
+
**Notes:**
|
|
53
|
+
- Not exit SDK when malloc failed
|
|
54
|
+
## v1.3.0
|
|
55
|
+
**Date: 2021/10/13**
|
|
56
|
+
**Notes:**
|
|
57
|
+
- Add batch consumer
|
|
58
|
+
## v1.2.3
|
|
59
|
+
**Date: 2021/09/23**
|
|
60
|
+
**Notes:**
|
|
61
|
+
- Fix #first_check_id error
|
|
62
|
+
## v1.2.2
|
|
63
|
+
**Date: 2021/07/01**
|
|
64
|
+
**Notes:**
|
|
65
|
+
- Adapt to windows environment
|
|
66
|
+
## v1.2.1
|
|
67
|
+
**Date: 2021/06/09**
|
|
68
|
+
**Notes:**
|
|
69
|
+
- No longer use stdbool library
|