@thinkingai/ae-cli 1.0.30 → 6.0.16
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 +2526 -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,366 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: c++_sdk_advanced
|
|
3
|
+
name: "Cpp-Advanced"
|
|
4
|
+
wikiToken: TBTtw1Tr4iCeZhk24otcOIK6nVf
|
|
5
|
+
parentWikiToken: COFfwkFwFiK0qMkfjJNc7DcMnLc
|
|
6
|
+
updateTime: 1774251998000
|
|
7
|
+
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=c%2B%2B_sdk_advanced
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1**. Managing User Identity**
|
|
11
|
+
SDK instances would use random UUID as the default distinct ID of each user by default, which would be used as the identity identification ID of users under an unlogged-in state. It should be noted that the distinct ID would change after the user reinstalled the APP or use the APP with a new device.
|
|
12
|
+
### **1.1. Identify**
|
|
13
|
+
::: tip
|
|
14
|
+
Generally speaking, you do not need to customize a distinct ID. Please ensure that you understand [<text underline="true">User Identification Rules</text>](https://thinkingdata.feishu.cn/wiki/Pov9wECdsi2QQsk4NN9cEPsvnyc)<text color="purple" underline="true"> </text>before setting a distinct ID.
|
|
15
|
+
If you need to change the distinct ID, please call the API immediately after SDK is initialized. To avoid the generation of useless accounts, please do not call such a process multiple times.
|
|
16
|
+
:::
|
|
17
|
+
If your APP has its own distinct ID management system for each user, you can call `Identify` to set the distinct ID:
|
|
18
|
+
```cpp
|
|
19
|
+
// set distinct ID as Thinker
|
|
20
|
+
ThinkingAnalyticsAPI::Identify("Thinker");
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
If you need to get the current distinct ID, please call `DistinctID()`:
|
|
24
|
+
```cpp
|
|
25
|
+
// Return distinct ID
|
|
26
|
+
ThinkingAnalyticsAPI::DistinctID().c_str()
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### **1.2 Login**
|
|
30
|
+
When the users log in, `Login` could be called to set the account ID of the user. TE would use the account ID as the identity identification ID, and the account ID that has been set would be saved before `LogOut` is called. The previous account ID would be replaced if `Login` has been called multiple times.
|
|
31
|
+
```cpp
|
|
32
|
+
// The login unique identifier of the user, corresponding to the #account_id in data tracking. #Account_id now is TE
|
|
33
|
+
ThinkingAnalyticsAPI::Login("TE");
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
<quote-container>
|
|
37
|
+
**Login events wouldn't be uploaded in this method.**
|
|
38
|
+
</quote-container>
|
|
39
|
+
|
|
40
|
+
### **1.3 Removing Account ID**
|
|
41
|
+
After the user logs out, `LogOut` could be called to remove the account ID. The distinct ID would be used as the identity identification ID before the next time `Login` is called.
|
|
42
|
+
```cpp
|
|
43
|
+
ThinkingAnalyticsAPI::LogOut();
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
It is recommended that you call logout upon explicit logout event. For example, call `logout` when the user commits the behavior of canceling an account; do not call such a process when the APP is closed.
|
|
47
|
+
<quote-container>
|
|
48
|
+
**Logout events wouldn't be uploaded in this method.**
|
|
49
|
+
</quote-container>
|
|
50
|
+
|
|
51
|
+
## **Sending Events**
|
|
52
|
+
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.
|
|
53
|
+
### **2.1 Ordinary Events**
|
|
54
|
+
You can call `Track` to upload events. It is suggested that you set event properties based on the data tracking plan drafted previously. Here is an example of a user buying an item:
|
|
55
|
+
```cpp
|
|
56
|
+
TDJSONObject event_properties;
|
|
57
|
+
event_properties.SetString("product_name", "product name");
|
|
58
|
+
ThinkingAnalyticsAPI::Track("product_buy", event_properties);
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### **2.2 First Events**
|
|
62
|
+
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.
|
|
63
|
+
```cpp
|
|
64
|
+
TDJSONObject jsonObject1;
|
|
65
|
+
jsonObject1.SetString("test","test");
|
|
66
|
+
TDFirstEvent *firstEvent = new TDFirstEvent("device_activation",jsonObject1);
|
|
67
|
+
ThinkingAnalyticsAPI::Track(firstEvent);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
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:
|
|
71
|
+
```cpp
|
|
72
|
+
//set the user ID as the first_check_id of the first event to track the first initialization event of the user.
|
|
73
|
+
TDJSONObject jsonObject1;
|
|
74
|
+
jsonObject1.SetString("test","test");
|
|
75
|
+
TDFirstEvent *firstEvent = new TDFirstEvent("account_activation",jsonObject1);
|
|
76
|
+
firstEvent->setFirstCheckId("TE");
|
|
77
|
+
ThinkingAnalyticsAPI::Track(firstEvent);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
<quote-container>
|
|
81
|
+
Note: Since the server has to check whether the event is the First Event, First Event event will be put in storage one hour later by default.
|
|
82
|
+
</quote-container>
|
|
83
|
+
|
|
84
|
+
### **2.3 Updatable Events**
|
|
85
|
+
You can meet the requirements for event data modification under specific scenarios through Updatable Events. The ID of Updatable Events should be specified and uploaded when the objects of Updatable Events are created. TE would determine the data to be updated according to the event name and event ID.
|
|
86
|
+
```cpp
|
|
87
|
+
//The event property status is 3 after reporting, with the price being 100
|
|
88
|
+
TDJSONObject jsonObject;
|
|
89
|
+
jsonObject.SetNumber("status", 3);
|
|
90
|
+
jsonObject.SetNumber("price", 100);
|
|
91
|
+
TDUpdatableEvent *updatableEvent = new TDUpdatableEvent("UPDATABLE_EVENT",jsonObject,"test_event_id");
|
|
92
|
+
ThinkingAnalyticsAPI::Track(updatableEvent);
|
|
93
|
+
|
|
94
|
+
//The event property status is 5 after reporting, with the price remaining the same
|
|
95
|
+
TDJSONObject jsonObject1;
|
|
96
|
+
jsonObject1.SetNumber("status", 5);
|
|
97
|
+
TDUpdatableEvent *updatableEvent1 = new TDUpdatableEvent("UPDATABLE_EVENT",jsonObject1,"test_event_id");
|
|
98
|
+
ThinkingAnalyticsAPI::Track(updatableEvent1);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### **2.4 Overwritable Events**
|
|
102
|
+
Despite the similarity with Updatable Events, Overwritable Events would replace 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. TE would determine the data to be updated according to the event name and event ID.
|
|
103
|
+
```cpp
|
|
104
|
+
// Instance: Assume the event name is OVERWRITE_EVENT when reporting an overwritable event
|
|
105
|
+
//The event property status is 3 after reporting, with the price being 100
|
|
106
|
+
TDJSONObject jsonObject;
|
|
107
|
+
jsonObject.SetNumber("status", 3);
|
|
108
|
+
jsonObject.SetNumber("price", 100);
|
|
109
|
+
TDOverWritableEvent *event = new TDOverWritableEvent("OVERWRITE_EVENT",jsonObject,"test_event_id");
|
|
110
|
+
ThinkingAnalyticsAPI::Track(event);
|
|
111
|
+
|
|
112
|
+
//The event property status is 5 after reporting, with the price deleted
|
|
113
|
+
TDJSONObject jsonObject1;
|
|
114
|
+
jsonObject1.SetNumber("status", 5);
|
|
115
|
+
TDOverWritableEvent *event1 = new TDOverWritableEvent("OVERWRITE_EVENT",jsonObject1,"test_event_id");
|
|
116
|
+
ThinkingAnalyticsAPI::Track(event1);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## **3. User Properties**
|
|
120
|
+
User property setting APIs supported by TE include: `UserSet`,`UserSetOnce`,`UserAdd`,`UserUnset`,`UserDelete`,`UserAppend`.
|
|
121
|
+
### 3.1 UserSet
|
|
122
|
+
You can call `UserSet` to set general user properties. The original properties would be replaced if the properties uploaded via the API are used. The type of newly-created user properties must conform to that of the uploaded properties. User name setting is taken as the example here:
|
|
123
|
+
```cpp
|
|
124
|
+
TDJSONObject userProperties;
|
|
125
|
+
//the username now is TA
|
|
126
|
+
userProperties.SetString("username", "TA");
|
|
127
|
+
ThinkingAnalyticsAPI::UserSet(userProperties);
|
|
128
|
+
//the userName now is TE
|
|
129
|
+
TDJSONObject userProperties1;
|
|
130
|
+
userProperties1.SetString("username", "TE");
|
|
131
|
+
ThinkingAnalyticsAPI::UserSet(userProperties1)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 3.2 UserSetOnce
|
|
135
|
+
If the user property you want to upload only needs to be set once, you can call `UserSetOnce` 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:
|
|
136
|
+
```cpp
|
|
137
|
+
//first_payment_time is 2018-01-01 01:23:45.678
|
|
138
|
+
TDJSONObject userProperties;
|
|
139
|
+
userProperties.SetString("first_payment_time","2018-01-01 01:23:45.678");
|
|
140
|
+
ThinkingAnalyticsAPI::UserSetOnce(userProperties);
|
|
141
|
+
|
|
142
|
+
//first_payment_time is still 2018-01-01 01:23:45.678
|
|
143
|
+
TDJSONObject userProperties1;
|
|
144
|
+
userProperties1.SetString("first_pay_time","2018-12-31 01:23:45.678");
|
|
145
|
+
ThinkingAnalyticsAPI::UserSetOnce(userProperties1);
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 3.3 UserAdd
|
|
149
|
+
When you want to upload numeric property for cumulative operation, you can call `UserAdd`.
|
|
150
|
+
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:
|
|
151
|
+
```cpp
|
|
152
|
+
//in this case, the total_revenue is 30
|
|
153
|
+
TDJSONObject userProperties;
|
|
154
|
+
userProperties.SetNumber("total_revenue",30;
|
|
155
|
+
ThinkingAnalyticsAPI::UserAdd(userProperties);
|
|
156
|
+
//in this case, the total_revenue is 678
|
|
157
|
+
TDJSONObject userProperties1;
|
|
158
|
+
userProperties1.SetNumber("total_revenue",648);
|
|
159
|
+
ThinkingAnalyticsAPI::UserAdd(userProperties1);
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
<quote-container>
|
|
163
|
+
The set property key is a string, and the value is only allowed to be a numeric value.
|
|
164
|
+
</quote-container>
|
|
165
|
+
|
|
166
|
+
### 3.4 UserUnset
|
|
167
|
+
When you need to clear the user properties of users, you can call `UserUnset` to clear specific properties. `UserUnset` would not create properties that have not been created in the cluster.
|
|
168
|
+
```cpp
|
|
169
|
+
ThinkingAnalyticsAPI::UserUnset("userUnset_key");
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 3.5 UserDelete
|
|
173
|
+
You can call `UserDelete` 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 data triggered by the user.
|
|
174
|
+
```cpp
|
|
175
|
+
ThinkingAnalyticsAPI::UserDelete();
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 3.6 UserAppend
|
|
179
|
+
You can call `U``ser``A``ppend` to add user properties of array type.
|
|
180
|
+
```cpp
|
|
181
|
+
TDJSONObject userProperties;
|
|
182
|
+
vector<string> listValue;
|
|
183
|
+
listValue.push_back("apple");
|
|
184
|
+
listValue.push_back("ball");
|
|
185
|
+
userProperties.SetList("user_list",listValue);
|
|
186
|
+
ThinkingAnalyticsAPI::UserAppend(userProperties);
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### 3.7 UserUniAppend
|
|
190
|
+
You can call UserUniqAppend to append user attributes of array type. Calling the UserUniqAppend interface will deduplicate the appended user attributes. The UserAppend interface does not deduplicate, and user attributes may be duplicated.
|
|
191
|
+
```cpp
|
|
192
|
+
//user_list value is ["apple","ball"]
|
|
193
|
+
TDJSONObject userProperties1;
|
|
194
|
+
vector<string> listValue1;
|
|
195
|
+
listValue1.push_back("apple");
|
|
196
|
+
listValue1.push_back("ball");
|
|
197
|
+
userProperties1.SetList("user_list",listValue1);
|
|
198
|
+
ThinkingAnalyticsAPI::UserAppend(userProperties1);
|
|
199
|
+
|
|
200
|
+
//user_list value is ["apple","apple","ball","cube"]
|
|
201
|
+
TDJSONObject userProperties2;
|
|
202
|
+
vector<string> listValue1;
|
|
203
|
+
listValue2.push_back("apple");
|
|
204
|
+
listValue2.push_back("cube");
|
|
205
|
+
userProperties2.SetList("user_list",listValue2);
|
|
206
|
+
ThinkingAnalyticsAPI::UserAppend(userProperties2);
|
|
207
|
+
|
|
208
|
+
//user_list value is ["apple","ball","cube"]
|
|
209
|
+
ThinkingAnalyticsAPI::UserUniqAppend(userProperties2);
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Others
|
|
214
|
+
### **4.1 Printing Log**
|
|
215
|
+
During the process of SDK integration, you can perform real-time debugging by checking SDK's logs in the IDE console or using the Debug feature of TE.
|
|
216
|
+
```cpp
|
|
217
|
+
ThinkingAnalyticsAPI::EnableLog(true);
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### **4.2** **Preset Properties of All Events**
|
|
221
|
+
|
|
222
|
+
<lark-table rows="10" cols="4" column-widths="169,152,140,259">
|
|
223
|
+
|
|
224
|
+
<lark-tr>
|
|
225
|
+
<lark-td>
|
|
226
|
+
** Property name **
|
|
227
|
+
</lark-td>
|
|
228
|
+
<lark-td>
|
|
229
|
+
**Display name **
|
|
230
|
+
</lark-td>
|
|
231
|
+
<lark-td>
|
|
232
|
+
** Property type **
|
|
233
|
+
</lark-td>
|
|
234
|
+
<lark-td>
|
|
235
|
+
** Instruction **
|
|
236
|
+
</lark-td>
|
|
237
|
+
</lark-tr>
|
|
238
|
+
<lark-tr>
|
|
239
|
+
<lark-td>
|
|
240
|
+
#ip
|
|
241
|
+
</lark-td>
|
|
242
|
+
<lark-td>
|
|
243
|
+
IP address
|
|
244
|
+
</lark-td>
|
|
245
|
+
<lark-td>
|
|
246
|
+
Text
|
|
247
|
+
</lark-td>
|
|
248
|
+
<lark-td>
|
|
249
|
+
IP address of the user, based on which TE would get the geographical location of the user
|
|
250
|
+
</lark-td>
|
|
251
|
+
</lark-tr>
|
|
252
|
+
<lark-tr>
|
|
253
|
+
<lark-td>
|
|
254
|
+
#country
|
|
255
|
+
</lark-td>
|
|
256
|
+
<lark-td>
|
|
257
|
+
Country
|
|
258
|
+
</lark-td>
|
|
259
|
+
<lark-td>
|
|
260
|
+
Text
|
|
261
|
+
</lark-td>
|
|
262
|
+
<lark-td>
|
|
263
|
+
The country where the user is located; generated based on the IP address
|
|
264
|
+
</lark-td>
|
|
265
|
+
</lark-tr>
|
|
266
|
+
<lark-tr>
|
|
267
|
+
<lark-td>
|
|
268
|
+
#country_code
|
|
269
|
+
</lark-td>
|
|
270
|
+
<lark-td>
|
|
271
|
+
Country code
|
|
272
|
+
</lark-td>
|
|
273
|
+
<lark-td>
|
|
274
|
+
Text
|
|
275
|
+
</lark-td>
|
|
276
|
+
<lark-td>
|
|
277
|
+
The code of the country where the user is located (ISO 3166-1 alpha-2, two English characters in upper case); generated based on the IP address
|
|
278
|
+
</lark-td>
|
|
279
|
+
</lark-tr>
|
|
280
|
+
<lark-tr>
|
|
281
|
+
<lark-td>
|
|
282
|
+
#province
|
|
283
|
+
</lark-td>
|
|
284
|
+
<lark-td>
|
|
285
|
+
Province
|
|
286
|
+
</lark-td>
|
|
287
|
+
<lark-td>
|
|
288
|
+
Text
|
|
289
|
+
</lark-td>
|
|
290
|
+
<lark-td>
|
|
291
|
+
The province or state where the user is located; generated based on the IP address
|
|
292
|
+
</lark-td>
|
|
293
|
+
</lark-tr>
|
|
294
|
+
<lark-tr>
|
|
295
|
+
<lark-td>
|
|
296
|
+
#city
|
|
297
|
+
</lark-td>
|
|
298
|
+
<lark-td>
|
|
299
|
+
City
|
|
300
|
+
</lark-td>
|
|
301
|
+
<lark-td>
|
|
302
|
+
Text
|
|
303
|
+
</lark-td>
|
|
304
|
+
<lark-td>
|
|
305
|
+
The city where the user is located; generated based on the IP address
|
|
306
|
+
</lark-td>
|
|
307
|
+
</lark-tr>
|
|
308
|
+
<lark-tr>
|
|
309
|
+
<lark-td>
|
|
310
|
+
#os
|
|
311
|
+
</lark-td>
|
|
312
|
+
<lark-td>
|
|
313
|
+
OS
|
|
314
|
+
</lark-td>
|
|
315
|
+
<lark-td>
|
|
316
|
+
Text
|
|
317
|
+
</lark-td>
|
|
318
|
+
<lark-td>
|
|
319
|
+
E.g., Android, iOS, Mac OS, etc.
|
|
320
|
+
</lark-td>
|
|
321
|
+
</lark-tr>
|
|
322
|
+
<lark-tr>
|
|
323
|
+
<lark-td>
|
|
324
|
+
#device_id
|
|
325
|
+
</lark-td>
|
|
326
|
+
<lark-td>
|
|
327
|
+
Device ID
|
|
328
|
+
</lark-td>
|
|
329
|
+
<lark-td>
|
|
330
|
+
Text
|
|
331
|
+
</lark-td>
|
|
332
|
+
<lark-td>
|
|
333
|
+
The ID of the user device; IDFV or UUID of the user for iOS; androidID for Android
|
|
334
|
+
</lark-td>
|
|
335
|
+
</lark-tr>
|
|
336
|
+
<lark-tr>
|
|
337
|
+
<lark-td>
|
|
338
|
+
#lib
|
|
339
|
+
</lark-td>
|
|
340
|
+
<lark-td>
|
|
341
|
+
SDK type
|
|
342
|
+
</lark-td>
|
|
343
|
+
<lark-td>
|
|
344
|
+
Text
|
|
345
|
+
</lark-td>
|
|
346
|
+
<lark-td>
|
|
347
|
+
The type of the SDK to which you integrate, e.g., Android,iOS, etc.
|
|
348
|
+
</lark-td>
|
|
349
|
+
</lark-tr>
|
|
350
|
+
<lark-tr>
|
|
351
|
+
<lark-td>
|
|
352
|
+
#lib_version
|
|
353
|
+
</lark-td>
|
|
354
|
+
<lark-td>
|
|
355
|
+
SDK version
|
|
356
|
+
</lark-td>
|
|
357
|
+
<lark-td>
|
|
358
|
+
Text
|
|
359
|
+
</lark-td>
|
|
360
|
+
<lark-td>
|
|
361
|
+
The version of the SDK to which you integrate
|
|
362
|
+
</lark-td>
|
|
363
|
+
</lark-tr>
|
|
364
|
+
</lark-table>
|
|
365
|
+
|
|
366
|
+
###
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: c++_sdk_release_notes
|
|
3
|
+
name: "Release Notes"
|
|
4
|
+
wikiToken: RXP9wUaJwi2fZhknp9XcfycJnqg
|
|
5
|
+
parentWikiToken: COFfwkFwFiK0qMkfjJNc7DcMnLc
|
|
6
|
+
updateTime: 1774249209000
|
|
7
|
+
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=c%2B%2B_sdk_release_notes
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## v1.5.3
|
|
11
|
+
**Date: 10/11/2025**
|
|
12
|
+
**Notes:**
|
|
13
|
+
- Known issues fixed
|
|
14
|
+
## v1.5.1
|
|
15
|
+
**Date: 08/01/2025**
|
|
16
|
+
**Notes:**
|
|
17
|
+
- Known issues fixed
|
|
18
|
+
## v1.5.0
|
|
19
|
+
**Date: 06/025/2025**
|
|
20
|
+
**Notes:**
|
|
21
|
+
- Thread optimization for configuration information retrieval
|
|
22
|
+
- Solve the problem of massive data duplication
|
|
23
|
+
## v1.4.5-beta.1
|
|
24
|
+
**Date: 06/06/2025**
|
|
25
|
+
**Notes:**
|
|
26
|
+
- Support multi-process
|
|
27
|
+
- Add custom timezone function
|
|
28
|
+
- Fix known issues
|
|
29
|
+
## v1.4.3.3
|
|
30
|
+
**Date: 05/29/2025**
|
|
31
|
+
**Notes:**
|
|
32
|
+
- Fixed known issues
|
|
33
|
+
## v1.4.3.2
|
|
34
|
+
**Date: 03/28/2025**
|
|
35
|
+
**Notes:**
|
|
36
|
+
- Fixed known issues
|
|
37
|
+
## v1.4.1
|
|
38
|
+
**Date: 01/04/2024**
|
|
39
|
+
**Notes:**
|
|
40
|
+
- Support custom storage paths for account IDs, visitor IDs, and static public attributes
|
|
41
|
+
## v1.4.0
|
|
42
|
+
**Date: ****12****/****05****/202****3**
|
|
43
|
+
**Notes:**
|
|
44
|
+
- Support custom database storage path
|
|
45
|
+
## v1.3.9
|
|
46
|
+
**Date: 11/01/2023**
|
|
47
|
+
**Notes:**
|
|
48
|
+
- Preset attribute collection and obtaining public preset attributes
|
|
49
|
+
- Dynamic public properties
|
|
50
|
+
- Debug, DebugOnly mode
|
|
51
|
+
- Data caching policy configuration (minimum data storage capacity, maximum retention time)
|
|
52
|
+
- Support UserUniqAppend
|
|
53
|
+
## v1.3.8
|
|
54
|
+
**Date: 09/05/2023**
|
|
55
|
+
**Notes:**
|
|
56
|
+
- Code specifications, log specifications, comment specifications
|
|
57
|
+
- Statistics of event duration
|
|
58
|
+
- Get super properties, clear super properties, clear a certain super property
|
|
59
|
+
- Support scheduled data reporting strategy
|
|
60
|
+
- Support server side disable event
|
|
61
|
+
- Supports obtaining device ID
|
|
62
|
+
## v1.3.7.1
|
|
63
|
+
**Date: 09/01/2023**
|
|
64
|
+
**Notes:**
|
|
65
|
+
- Fix bugs
|
|
66
|
+
## v1.3.7
|
|
67
|
+
**Date: 06/26/2023**
|
|
68
|
+
**Notes:**
|
|
69
|
+
- Fixed the problem of converting reported data from original string to array.
|
|
70
|
+
- Support data transmission encryption
|
|
71
|
+
- Support time calibration
|
|
72
|
+
- Add encryption failure callback
|
|
73
|
+
## v1.3.6
|
|
74
|
+
**Date: 05/26/2023**
|
|
75
|
+
**Notes:**
|
|
76
|
+
- Use semaphore to optimize data sending efficiency
|
|
77
|
+
- Support dll access
|
|
78
|
+
## v1.3.5
|
|
79
|
+
**Date: **05/12/2023
|
|
80
|
+
**Notes:**
|
|
81
|
+
- Optimize SDK code to avoid null pointer operations
|
|
82
|
+
- Add local log output
|
|
83
|
+
- Add global error callback
|
|
84
|
+
## v1.3.4
|
|
85
|
+
**Date:** 2023/03/30
|
|
86
|
+
**Notes:**
|
|
87
|
+
- Optimize SDK code
|
|
88
|
+
## v1.3.3
|
|
89
|
+
**Date:** 2023/03/21
|
|
90
|
+
**Notes:**
|
|
91
|
+
- Optimize SDK code
|
|
92
|
+
## v1.2.0
|
|
93
|
+
**Date:** 2022/10/26
|
|
94
|
+
**Notes:**
|
|
95
|
+
- Standardize the API naming of the SDK
|
|
96
|
+
- Optimize SDK code
|
|
97
|
+
## v1.0.0
|
|
98
|
+
**Date:** 2022/03/31
|
|
99
|
+
**Notes:**
|
|
100
|
+
- Support setting of visitor ID and user account
|
|
101
|
+
- Support event and user attribute reporting
|
|
102
|
+
- Support reporting of first, update and rewrite events
|
|
103
|
+
- Support Mac and Windows data reporting
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: cpp_sdk_installation
|
|
3
|
+
name: "Cpp"
|
|
4
|
+
wikiToken: COFfwkFwFiK0qMkfjJNc7DcMnLc
|
|
5
|
+
parentWikiToken: KaFCwNeV3iRxjNkpT3QcDMg3n5V
|
|
6
|
+
updateTime: 1774251998000
|
|
7
|
+
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=cpp_sdk_installation
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
::: tip
|
|
11
|
+
Before you begin, please read [<text color="purple" underline="true">Preparation before Data Ingestion</text>](https://thinkingdata.feishu.cn/wiki/OhD8we9iai6Xk5kM1QNc8ITRnQe)
|
|
12
|
+
You can get the[ C++ SDK Source Code](https%3A%2F%2Fgithub.com%2FThinkingDataAnalytics%2Fcpp-sdk) on GitHub.
|
|
13
|
+
Supported platforms: Mac , Windows .
|
|
14
|
+
Supported C++ Version: 11 and above versions, and the size is about 144KB
|
|
15
|
+
:::
|
|
16
|
+
**Latest version:** 1.5.3
|
|
17
|
+
**Update time:** 10/112025
|
|
18
|
+
**Resource download: **[SDK Source Code](https%3A%2F%2Fgithub.com%2FThinkingDataAnalytics%2Fcpp-sdk)
|
|
19
|
+
|
|
20
|
+
## **1. ****SDK**** Integration**
|
|
21
|
+
### 1.1 Download SDK
|
|
22
|
+
Download the SDK source code, unzip it and enter `cpp-client/cpp`folder.
|
|
23
|
+
`include` is the SDK header file.
|
|
24
|
+
`src` is the SDK source code file.
|
|
25
|
+
`thirdparty` is the dependent third-party library.
|
|
26
|
+
### **1.2 Dependencies**
|
|
27
|
+
The C++ SDK depends on sqlite, curl, zlib and openssl libraries. Due to differences in platform feature, the formats of the libraries are also different. You can use the compiled library, or you can compile the library yourself.
|
|
28
|
+
#### **1.2.1 Libraries compiled using ****TE**
|
|
29
|
+
The library is generated by the MGWin compiler on the x64 platform of Windows, and the compiled library in the thirdparty folder is configured into the project. (.dll is a dynamic library, .lib is a static library)
|
|
30
|
+
<image token="SAWGbph63oYM3kxVvpAcgkwhnff" width="1532" height="270" align="left"/>
|
|
31
|
+
|
|
32
|
+
#### **1.2.2 Libraries Compile by yourself**
|
|
33
|
+
Here take the windows platform as an example:
|
|
34
|
+
Download the curl library, https://github.com/curl/curl/releases/tag/curl-7_61_1. After decompression, switch to the `winbuild` directory and compile. The compilation command is as follows. The compilation result is under the `curl` directory `builds`.
|
|
35
|
+
```cpp
|
|
36
|
+
nmake /f Makefile.vc mode=static ENABLE_IDN=no
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Download the zlib library, https://github.com/madler/zlib/releases/tag/v1.2.11, after decompression, execute the compilation command, the compilation result is in the `zlib` directory.
|
|
40
|
+
```cpp
|
|
41
|
+
nmake -f win32/Makefile.msc
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Download the sqlite library, https://www.sqlite.org/download.html, select the library of the specified platform.
|
|
45
|
+
Download the openssl library, https://github.com/openssl/openssl, select the library of the specified platform.
|
|
46
|
+
<callout emoji="round_pushpin" background-color="light-orange" border-color="light-orange">
|
|
47
|
+
In addition to the command line, you can also use IDE (Integrated Development Environment), such as Visual Studio, Clion, etc. to generate libraries for the corresponding platform.
|
|
48
|
+
</callout>
|
|
49
|
+
|
|
50
|
+
### 1.3 **SDK**** Integration**
|
|
51
|
+
#### **1.3.1 CMake **
|
|
52
|
+
Use CMake to integrate the C++ SDK, copy the cpp folder to the project, and add the following configurations for Windows and Mac in the CMakeLists.txt file:
|
|
53
|
+
Set version of C++:
|
|
54
|
+
```apache
|
|
55
|
+
set(CMAKE_CXX_STANDARD 11)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Import header file:
|
|
59
|
+
```makefile
|
|
60
|
+
include_directories(cpp/include)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Windows platform configuration:
|
|
64
|
+
```powershell
|
|
65
|
+
if(WIN32)
|
|
66
|
+
if(CMAKE_SIZEOF_VOID_P EQUAL 8) # x64
|
|
67
|
+
include_directories(cpp/thirdparty/x64/curl/include cpp/thirdparty/x64/zlib/include cpp/thirdparty/x64/sqlite/include cpp/thirdparty/x64/openssl/include)
|
|
68
|
+
link_directories(cpp/thirdparty/x64/curl/lib cpp/thirdparty/x64/zlib/lib cpp/thirdparty/x64/sqlite/lib cpp/thirdparty/x64/openssl/lib)
|
|
69
|
+
else() # Win32
|
|
70
|
+
include_directories(cpp/thirdparty/x86/curl/include cpp/thirdparty/x86/zlib/include cpp/thirdparty/x86/sqlite/include cpp/thirdparty/x86/openssl/include)
|
|
71
|
+
link_directories(cpp/thirdparty/x86/curl/lib cpp/thirdparty/x86/zlib/lib cpp/thirdparty/x86/sqlite/lib cpp/thirdparty/x86/openssl/lib)
|
|
72
|
+
endif()
|
|
73
|
+
add_library(thinkingdata SHARED cpp/src/ta_analytics_sdk.cpp cpp/src/ta_cpp_helper.cpp cpp/src/ta_cpp_network.cpp cpp/src/ta_cpp_utils.cpp cpp/src/ta_sqlite.cpp cpp/src/ta_timer.cpp cpp/src/ta_event_task.cpp cpp/src/ta_cpp_send.cpp cpp/src/ta_json_object.cpp cpp/src/ta_cJSON.c cpp/src/ta_encrypt.cpp cpp/src/ta_calibrated_time.cpp cpp/src/ta_flush_task.cpp)
|
|
74
|
+
target_link_libraries(thinkingdata libcurl sqlite3 zlibwapi libssl libcrypto)
|
|
75
|
+
endif()
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Mac platform configuration:
|
|
79
|
+
```c
|
|
80
|
+
if (CMAKE_HOST_APPLE)
|
|
81
|
+
find_library(COCOA Cocoa)
|
|
82
|
+
find_library(IOKIT IOKit)
|
|
83
|
+
find_package(OpenSSL REQUIRED)
|
|
84
|
+
include_directories(${OPENSSL_INCLUDE_DIR})
|
|
85
|
+
link_directories(${OPENSSL_LIBRARIES})
|
|
86
|
+
add_library(thinkingdata SHARED cpp/src/ta_analytics_sdk.cpp cpp/src/ta_cpp_helper.cpp cpp/src/ta_cpp_network.cpp cpp/src/ta_cpp_utils.cpp cpp/src/ta_sqlite.cpp cpp/src/ta_timer.cpp cpp/src/ta_event_task.cpp cpp/src/ta_cpp_send.cpp cpp/src/ta_json_object.cpp cpp/src/ta_cJSON.c cpp/src/ta_mac_tool.mm cpp/src/ta_encrypt.cpp cpp/src/ta_calibrated_time.cpp cpp/src/ta_flush_task.cpp)
|
|
87
|
+
target_link_libraries(thinkingdata curl z sqlite3 ${OPENSSL_LIBRARIES} ${COCOA} ${IOKIT})
|
|
88
|
+
endif()
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
#### **1.3.2 Libraries Compile by yourself**
|
|
92
|
+
1. Download the SDK code and cd to the cmakelist file directory
|
|
93
|
+
2. Execute the following command
|
|
94
|
+
```java
|
|
95
|
+
//Windows platform uses visual studio to compile
|
|
96
|
+
//x86
|
|
97
|
+
cmake -S . -B build -G "Visual Studio 17 2022" -A Win32
|
|
98
|
+
//x64
|
|
99
|
+
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
```asm
|
|
103
|
+
//Mac
|
|
104
|
+
// arm64 m1
|
|
105
|
+
arch -arm64 cmake -B build
|
|
106
|
+
arch -arm64 cmake --build build
|
|
107
|
+
|
|
108
|
+
//x86_64 intel
|
|
109
|
+
arch -x86_64 cmake -B build
|
|
110
|
+
arch -x86_64 cmake --build build
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### **1.3.3 Using source code integration**
|
|
114
|
+
After completing the three-party dependency configuration in step 1 and 2, add the include and src folders to the project.
|
|
115
|
+
<image token="Nt1DbY1Ypo3wrhxYdQZcKmaAnDg" width="1078" height="258" align="center"/>
|
|
116
|
+
|
|
117
|
+
#### 1.3.4 Use compiled library
|
|
118
|
+
[SDK Download](https%3A%2F%2Fdownload.thinkingdata.cn%2Fclient%2Frelease%2Fta_cpp_client.zip)
|
|
119
|
+
After downloading and decompressing, you can find the corresponding dll files for x64 and x86 platforms, which can be used directly.
|
|
120
|
+
## **2. Initialization**
|
|
121
|
+
```cpp
|
|
122
|
+
#include "ta_analytics_sdk.h"
|
|
123
|
+
#include "ta_json_object.h"
|
|
124
|
+
|
|
125
|
+
using namespace thinkingdata;
|
|
126
|
+
|
|
127
|
+
ThinkingAnalyticsAPI::Init(SERVER_URL, APPID);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Instruction on parameters:
|
|
131
|
+
- `APPID`: The APPID of your project, which can be found on the project management page of the TE.
|
|
132
|
+
- `SERVER_URL`:
|
|
133
|
+
- If you are using a SaaS version, please check the receiver URL on this page.
|
|
134
|
+
- If you are using a privatized deployment version, please bind the data tracking URL with a domain name and configure it with an HTTPS certificate: `https://bind the domain name with the data tracking URL`.
|
|
135
|
+
## **3. Common Features**
|
|
136
|
+
We suggested that you read [User Identification Rules](https://thinkingdata.feishu.cn/wiki/Pov9wECdsi2QQsk4NN9cEPsvnyc) before using common features; SDK would generate a random number that would be used as the distinct ID, and save the ID locally. Before the user logs in, the distinct ID would be used as the identification ID. Note: The distinct ID would change after the user reinstalled the APP or used the APP with a new device.
|
|
137
|
+
### **3.1 Login**
|
|
138
|
+
When the users log in , `login` could be called to set the account ID of the user. TE platform would use the account ID as the identification ID, and this ID would be saved before `logout` is called. The previous account ID would be replaced if `login` has been called multiple times.
|
|
139
|
+
```cpp
|
|
140
|
+
// The login unique identifier of the user, corresponding to the #account_id in data tracking. #Account_id now is TE
|
|
141
|
+
ThinkingAnalyticsAPI::Login("TE");
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
<quote-container>
|
|
145
|
+
**Login events wouldn't be uploaded in this method.**
|
|
146
|
+
</quote-container>
|
|
147
|
+
|
|
148
|
+
### **3.2 Sending Events**
|
|
149
|
+
You can call `track` to upload events. It is suggested that you set event properties based on the data tracking plan drafted previously. Here is an example of a user buying an item:
|
|
150
|
+
```cpp
|
|
151
|
+
TDJSONObject event_properties;
|
|
152
|
+
event_properties.SetString("name1", "name1"); //string
|
|
153
|
+
event_properties.SetNumber("test_number_int", 3); //number
|
|
154
|
+
event_properties.SetBool("test_bool", true); //boolean
|
|
155
|
+
event_properties.SetDateTime("test_time1", time(NULL), 0); //time
|
|
156
|
+
std::vector<std::string> test_list;
|
|
157
|
+
test_list.push_back("item11");
|
|
158
|
+
test_list.push_back("item21");
|
|
159
|
+
event_properties.SetList("test_list1", test_list); //array
|
|
160
|
+
ThinkingAnalyticsAPI::Track("CPP_event", event_properties);
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
The event name is string type. It could only start with a character and could contain figures, characters, and an underline "_", with a maximum length of 50 characters.
|
|
164
|
+
### 3.3 **User Properties**
|
|
165
|
+
You can set general user properties by calling `user_set` API. The original properties would be replaced by the properties uploaded via this API. The data type of newly-created user properties must be the same as the uploaded properties. User name setting is taken as the example here:
|
|
166
|
+
```cpp
|
|
167
|
+
TDJSONObject userProperties;
|
|
168
|
+
userProperties.SetString("user_name", "TE");
|
|
169
|
+
ThinkingAnalyticsAPI::UserSet(userProperties);
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## 4. **Best Practice**
|
|
173
|
+
The following sample code covers all the above-mentioned operations. It is recommended that the SDK be used in the following steps:
|
|
174
|
+
```cpp
|
|
175
|
+
#include "ta_analytics_sdk.h"
|
|
176
|
+
using namespace thinkingdata;
|
|
177
|
+
|
|
178
|
+
if (privacy policy is authorized) {
|
|
179
|
+
ThinkingAnalyticsAPI::Init(SERVER_URL, APPID);
|
|
180
|
+
ThinkingAnalyticsAPI::Login("TE");
|
|
181
|
+
TDJSONObject event_properties;
|
|
182
|
+
event_properties.SetString("name1", "name1");//string
|
|
183
|
+
event_properties.SetNumber("test_number_int", 3);//number
|
|
184
|
+
event_properties.SetBool("test_bool", true);//boolean
|
|
185
|
+
event_properties.SetDateTime("test_time1", time(NULL), 0);//time
|
|
186
|
+
std::vector<std::string> test_list;
|
|
187
|
+
test_list.push_back("item11");
|
|
188
|
+
test_list.push_back("item21");
|
|
189
|
+
event_properties.SetList("test_list1", test_list);//array
|
|
190
|
+
ThinkingAnalyticsAPI::Track("CPP_event", event_properties);;
|
|
191
|
+
|
|
192
|
+
TDJSONObject userProperties;
|
|
193
|
+
userProperties1.SetString("user_name", "TE");
|
|
194
|
+
ThinkingAnalyticsAPI::UserSet(userProperties);
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
###
|
|
200
|
+
##
|
|
201
|
+
###
|