@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.
Files changed (355) hide show
  1. package/dist/{auth-U25QJU5D.js → auth-DYC2BGLM.js} +2 -3
  2. package/dist/{auth-H3GJD55A.js → auth-GHBMJ5ZR.js} +33 -17
  3. package/dist/{chunk-CLJF7MQA.js → chunk-2DUEAXV3.js} +1 -1
  4. package/dist/{chunk-SF3KTPIC.js → chunk-5OC7CYCG.js} +2 -2
  5. package/dist/{chunk-SRJIAOBN.js → chunk-6W4QOZAL.js} +10 -0
  6. package/dist/{chunk-I42JGQ2J.js → chunk-BJX3GXWC.js} +3 -5
  7. package/dist/{chunk-GLNZSDKO.js → chunk-DMMEPCST.js} +4 -6
  8. package/dist/{chunk-VJFUB3H3.js → chunk-I5CRVM2S.js} +3 -3
  9. package/dist/{chunk-GSJGPNKK.js → chunk-PN3OS34E.js} +1 -1
  10. package/dist/{chunk-JM34JPCO.js → chunk-RSHMZ3LG.js} +178 -4
  11. package/dist/{client-IN42F223.js → client-2UJ63MVQ.js} +3 -4
  12. package/dist/{config-64G36TJL.js → config-NCUGK6NS.js} +3 -3
  13. package/dist/index.js +2526 -28
  14. package/dist/{model-VZCYNIOG.js → model-SJSOZTRS.js} +2 -2
  15. package/dist/{raw-WJIWC6YP.js → raw-7NVWSVJP.js} +5 -7
  16. package/dist/{sync-NVASAISS.js → sync-GRVO4K3U.js} +3 -3
  17. package/dist/{te-agent-YV4DXEXK.js → te-agent-KZRIEN4N.js} +468 -46
  18. package/dist/{te-analysis-CB3DA5I5.js → te-analysis-VAR4KUOK.js} +144 -29
  19. package/dist/{te-audience-W7SCQFC7.js → te-audience-KMKYI2YJ.js} +22 -15
  20. package/dist/{te-common-FBXVWBSI.js → te-common-WNCZB7R7.js} +4 -5
  21. package/dist/{te-community-LNVDZSGW.js → te-community-JEEFXPB3.js} +10 -11
  22. package/dist/{te-dataops-IPCSSWYH.js → te-dataops-GD3XBYCS.js} +11 -12
  23. package/dist/{te-engage-KARARMIR.js → te-engage-4XHCTS6I.js} +4 -5
  24. package/dist/{te-kb-2Z2CARN3.js → te-kb-B62KFP2A.js} +96 -8
  25. package/dist/{te-meta-PDKLMWXN.js → te-meta-EPZGQN56.js} +9 -10
  26. package/dist/{te-team-SW5B7DHO.js → te-team-YY24VORI.js} +6 -7
  27. package/dist/tracking/i18n/resources/cli/en.json +153 -0
  28. package/dist/tracking/i18n/resources/cli/ja.json +153 -0
  29. package/dist/tracking/i18n/resources/cli/ko.json +153 -0
  30. package/dist/tracking/i18n/resources/cli/zh.json +153 -0
  31. package/package.json +9 -3
  32. package/skills/ae-agent/SKILL.md +65 -25
  33. package/skills/ae-analysis/SKILL.md +108 -8
  34. package/skills/ae-analysis/references/cancel_query.md +39 -0
  35. package/skills/ae-analysis/references/drilldown_user_events.md +4 -2
  36. package/skills/ae-analysis/references/drilldown_users.md +4 -2
  37. package/skills/ae-analysis/references/get_bi_panel_detail.md +35 -0
  38. package/skills/ae-analysis/references/list_alerts.md +1 -1
  39. package/skills/ae-analysis/references/list_bi_panels.md +35 -0
  40. package/skills/ae-analysis/references/list_cluster_members.md +4 -1
  41. package/skills/ae-analysis/references/list_dashboards.md +1 -1
  42. package/skills/ae-analysis/references/list_entities.md +1 -1
  43. package/skills/ae-analysis/references/list_events.md +1 -1
  44. package/skills/ae-analysis/references/list_metrics.md +1 -1
  45. package/skills/ae-analysis/references/list_project_mark_times.md +1 -1
  46. package/skills/ae-analysis/references/list_properties.md +1 -1
  47. package/skills/ae-analysis/references/list_public_access_links.md +1 -1
  48. package/skills/ae-analysis/references/list_reports.md +1 -1
  49. package/skills/ae-analysis/references/list_tag_members.md +4 -1
  50. package/skills/ae-analysis/references/query_adhoc.md +6 -5
  51. package/skills/ae-analysis/references/query_bi_panel_data.md +58 -0
  52. package/skills/ae-analysis/references/query_dashboard_report_data.md +4 -1
  53. package/skills/ae-analysis/references/query_entity_details.md +5 -2
  54. package/skills/ae-analysis/references/query_event_details.md +4 -1
  55. package/skills/ae-analysis/references/query_report_data.md +2 -2
  56. package/skills/ae-analysis-global/SKILL.md +3 -1
  57. package/skills/ae-analysis-intent/SKILL.md +132 -0
  58. package/skills/ae-data-integration-helper/SKILL.md +242 -0
  59. package/skills/ae-data-integration-helper/references/android_sdk_faq.md +179 -0
  60. package/skills/ae-data-integration-helper/references/c_sdk_compilation.md +83 -0
  61. package/skills/ae-data-integration-helper/references/c_sdk_faq.md +416 -0
  62. package/skills/ae-data-integration-helper/references/cocoscreator_sdk_faq.md +123 -0
  63. package/skills/ae-data-integration-helper/references/cpp_server_sdk_faq.md +365 -0
  64. package/skills/ae-data-integration-helper/references/index.md +56 -0
  65. package/skills/ae-data-integration-helper/references/ios_sdk_faq.md +118 -0
  66. package/skills/ae-data-integration-helper/references/java_sdk_faq.md +406 -0
  67. package/skills/ae-data-integration-helper/references/javascript_sdk_faq.md +129 -0
  68. package/skills/ae-data-integration-helper/references/logbus2_guide.md +309 -0
  69. package/skills/ae-data-integration-helper/references/logbus2_parser_plugin.md +348 -0
  70. package/skills/ae-data-integration-helper/references/minigame_sdk_faq.md +115 -0
  71. package/skills/ae-data-integration-helper/references/miniprogram_sdk_faq.md +118 -0
  72. package/skills/ae-data-integration-helper/references/python_sdk_faq.md +232 -0
  73. package/skills/ae-data-integration-helper/references/restful_api_notes.md +74 -0
  74. package/skills/ae-data-integration-helper/references/sdk_log_guide.md +316 -0
  75. package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +107 -0
  76. package/skills/ae-data-integration-helper/references/unity_sdk_faq.md +115 -0
  77. package/skills/ae-generate-tracking-code/SKILL.md +629 -0
  78. package/skills/ae-generate-tracking-code/references/autotrack-enum.md +183 -0
  79. package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +202 -0
  80. package/skills/ae-generate-tracking-code/references/datax-config.md +43 -0
  81. package/skills/ae-generate-tracking-code/references/debug-script.md +102 -0
  82. package/skills/ae-generate-tracking-code/references/logbus-config.md +200 -0
  83. package/skills/ae-generate-tracking-code/references/modes.md +83 -0
  84. package/skills/ae-generate-tracking-code/references/restful-call.md +36 -0
  85. package/skills/ae-generate-tracking-code/references/sdk-index.md +128 -0
  86. package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +206 -0
  87. package/skills/ae-generate-tracking-code/references/snippet-delivery.md +394 -0
  88. package/skills/ae-generate-tracking-code/references/te-api.md +181 -0
  89. package/skills/ae-generate-tracking-plan/SKILL.md +1083 -0
  90. package/skills/ae-generate-tracking-plan/references/autotrack-events.md +273 -0
  91. package/skills/ae-generate-tracking-plan/references/business-dimension-mapping.md +425 -0
  92. package/skills/ae-generate-tracking-plan/references/te-api.md +100 -0
  93. package/skills/ae-generate-tracking-plan/references/xlsx-schema.md +152 -0
  94. package/skills/ae-kb/SKILL.md +38 -5
  95. 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
  96. 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
  97. 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
  98. 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
  99. package/tracking-plan-template/RPG/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +72 -0
  100. package/tracking-plan-template/RPG/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
  101. 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
  102. 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
  103. package/tracking-plan-template/Slots/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +80 -0
  104. package/tracking-plan-template/Slots/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
  105. 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
  106. 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
  107. package/tracking-plan-template/TE/345/256/230/346/226/271/346/250/241/346/235/277_dataTrackSample.md +40 -0
  108. package/tracking-plan-template/TE/345/256/230/346/226/271/346/250/241/346/235/277_dataTrackSample.xlsx +0 -0
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. 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
  123. 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
  124. 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
  125. 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
  126. 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
  127. 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
  128. 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
  129. 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
  130. 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
  131. 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
  132. 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
  133. 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
  134. 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
  135. package/wiki/te-docs/index.md +225 -0
  136. package/wiki/te-docs/raw/advanced-data-type/first-event-check.md +66 -0
  137. package/wiki/te-docs/raw/advanced-data-type/updated-event.md +87 -0
  138. package/wiki/te-docs/raw/advanced-data-type.md +16 -0
  139. package/wiki/te-docs/raw/data-ingestion-guide/about-gdpr.md +55 -0
  140. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/automatic-event-tracking.md +431 -0
  141. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/debugging-and-logging.md +49 -0
  142. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/multi-instance.md +66 -0
  143. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/preset-properties.md +466 -0
  144. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/third-party-integration.md +127 -0
  145. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced.md +513 -0
  146. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/compliance.md +24 -0
  147. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/release-notes.md +177 -0
  148. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android.md +228 -0
  149. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c/c-advanced.md +419 -0
  150. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c/release-notes.md +45 -0
  151. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c.md +110 -0
  152. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/client-side-sdk-faq.md +52 -0
  153. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp/cpp-advanced.md +366 -0
  154. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp/release-notes.md +103 -0
  155. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp.md +201 -0
  156. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/compliance.md +26 -0
  157. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/automatically-track-events.md +117 -0
  158. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/debugging-and-logging.md +47 -0
  159. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/preset-properties.md +52 -0
  160. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced.md +267 -0
  161. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/release-notes.md +82 -0
  162. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter.md +139 -0
  163. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/compliance.md +26 -0
  164. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/automatically-track-events.md +121 -0
  165. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/debugging-and-logging.md +54 -0
  166. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/preset-properties.md +18 -0
  167. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced.md +305 -0
  168. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/release-notes.md +79 -0
  169. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native.md +137 -0
  170. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/release-notes.md +24 -0
  171. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/automatically-track-events.md +54 -0
  172. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/debugging-and-logging.md +53 -0
  173. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/multi-instance.md +42 -0
  174. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/preset-properties.md +119 -0
  175. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/support-native.md +81 -0
  176. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced.md +331 -0
  177. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app.md +156 -0
  178. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform.md +12 -0
  179. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/automatic-event-tracking.md +29 -0
  180. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/debugging-and-logging.md +47 -0
  181. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/multi-instance.md +21 -0
  182. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/preset-properties.md +249 -0
  183. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced.md +301 -0
  184. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/compliance.md +24 -0
  185. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/release-notes.md +51 -0
  186. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x.md +281 -0
  187. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/automatic-event-tracking.md +70 -0
  188. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/debugging-and-logging.md +57 -0
  189. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/native-support.md +104 -0
  190. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/preset-properties.md +91 -0
  191. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance.md +374 -0
  192. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/compliance.md +35 -0
  193. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/release-notes.md +109 -0
  194. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator.md +170 -0
  195. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/compliance.md +28 -0
  196. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/automatic-event-tracking.md +29 -0
  197. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/debugging-and-logging.md +58 -0
  198. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/preset-properties.md +43 -0
  199. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced.md +204 -0
  200. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/release-notes.md +29 -0
  201. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona.md +269 -0
  202. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/compliance.md +24 -0
  203. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/release-notes.md +177 -0
  204. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/automatic-event-tracking.md +119 -0
  205. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/debugging-and-logging.md +47 -0
  206. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/multi-instance.md +50 -0
  207. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/native-pluggable.md +43 -0
  208. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/preset-properties.md +212 -0
  209. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/third-party-integration.md +77 -0
  210. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced.md +396 -0
  211. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity.md +176 -0
  212. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/compliance.md +24 -0
  213. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/release-notes.md +81 -0
  214. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/automatic-event-tracking.md +79 -0
  215. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/debugging-and-logging.md +31 -0
  216. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/preset-properties.md +25 -0
  217. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/third-party-integrations.md +141 -0
  218. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced.md +278 -0
  219. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal.md +190 -0
  220. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine.md +14 -0
  221. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/h5-and-app-sdk-connection.md +147 -0
  222. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/instant-app-and-game.md +24 -0
  223. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/compliance.md +24 -0
  224. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/automatic-event-tracking.md +272 -0
  225. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/debugging-and-logging.md +77 -0
  226. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/multi-instance.md +142 -0
  227. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/preset-properties.md +484 -0
  228. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/third-party-integrations.md +132 -0
  229. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced.md +682 -0
  230. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/release-notes.md +163 -0
  231. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios.md +304 -0
  232. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/compliance.md +29 -0
  233. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/automatic-event-tracking.md +136 -0
  234. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/debugging-and-logging.md +48 -0
  235. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/multi-instance.md +50 -0
  236. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/preset-properties.md +132 -0
  237. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced.md +462 -0
  238. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/release-notes.md +107 -0
  239. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript.md +208 -0
  240. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced/debugging-and-logging.md +62 -0
  241. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced/preset-properties.md +118 -0
  242. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced.md +556 -0
  243. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos.md +231 -0
  244. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk.md +25 -0
  245. package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/filebeat-logstash-user-guide.md +610 -0
  246. package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/logbus2-user-guide.md +1215 -0
  247. package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/ta-datax-writer-plugin-user-guide.md +278 -0
  248. package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools.md +15 -0
  249. package/wiki/te-docs/raw/data-ingestion-guide/privacy-policy.md +38 -0
  250. package/wiki/te-docs/raw/data-ingestion-guide/restful-api-user-guide.md +155 -0
  251. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging-FM9Cwz.md +37 -0
  252. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging-RSyfw7.md +41 -0
  253. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging.md +89 -0
  254. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties-OxzWw.md +126 -0
  255. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties-VuE3wr.md +126 -0
  256. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties.md +126 -0
  257. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced-IauKwI.md +175 -0
  258. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced-YAilwk.md +210 -0
  259. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced.md +211 -0
  260. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes-PVazwa.md +62 -0
  261. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes-TADbwY.md +50 -0
  262. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes.md +69 -0
  263. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c-V2W3wv.md +131 -0
  264. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c-Zf9Jwl.md +179 -0
  265. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c.md +189 -0
  266. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced/debugging-and-logging.md +38 -0
  267. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced/preset-properties.md +126 -0
  268. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced.md +113 -0
  269. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/release-notes.md +34 -0
  270. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang.md +155 -0
  271. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced/debugging-and-logging.md +42 -0
  272. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced/preset-properties.md +126 -0
  273. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced.md +157 -0
  274. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/release-notes.md +72 -0
  275. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang.md +148 -0
  276. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced/debugging-and-logging.md +49 -0
  277. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced/preset-properties.md +126 -0
  278. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced.md +223 -0
  279. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/release-notes.md +88 -0
  280. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java.md +174 -0
  281. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced/debugging-and-logging.md +46 -0
  282. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced/preset-properties.md +126 -0
  283. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced.md +182 -0
  284. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/release-notes.md +61 -0
  285. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua.md +121 -0
  286. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced/debugging-and-logging.md +55 -0
  287. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced/preset-properties.md +126 -0
  288. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced.md +225 -0
  289. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/release-notes.md +45 -0
  290. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs.md +141 -0
  291. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced/debugging-and-logging.md +41 -0
  292. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced/preset-properties.md +126 -0
  293. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced.md +216 -0
  294. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/release-notes.md +45 -0
  295. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php.md +173 -0
  296. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced/debugging-and-logging.md +40 -0
  297. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced/preset-properties.md +126 -0
  298. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced.md +206 -0
  299. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/release-notes.md +51 -0
  300. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python.md +116 -0
  301. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/release-notes.md +44 -0
  302. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced/debugging-and-logging.md +47 -0
  303. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced/preset-properties.md +126 -0
  304. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced.md +189 -0
  305. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby.md +142 -0
  306. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk.md +22 -0
  307. package/wiki/te-docs/raw/data-ingestion-guide/thinkingdata-privacy-policy.md +37 -0
  308. package/wiki/te-docs/raw/data-ingestion-guide.md +48 -0
  309. package/wiki/te-docs/raw/preparations-before-data-ingestion/data-rules.md +396 -0
  310. package/wiki/te-docs/raw/preparations-before-data-ingestion/preset-properties-and-system-fields.md +957 -0
  311. package/wiki/te-docs/raw/preparations-before-data-ingestion/user-identification-rules.md +723 -0
  312. package/wiki/te-docs/raw/preparations-before-data-ingestion.md +203 -0
  313. 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
  314. 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
  315. 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
  316. 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
  317. 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
  318. 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
  319. package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony.md +172 -0
  320. 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
  321. 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
  322. 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
  323. 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
  324. 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
  325. 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
  326. 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
  327. 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
  328. 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
  329. 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
  330. 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
  331. 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
  332. 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
  333. 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
  334. 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
  335. 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
  336. 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
  337. 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
  338. 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
  339. 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
  340. 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
  341. 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
  342. 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
  343. 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
  344. 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
  345. 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
  346. 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
  347. 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
  348. 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
  349. package/wiki/te-docs/schema.md +16 -0
  350. package/wiki/te-docs/synthesis/batch-ingest-comparison.md +324 -0
  351. package/wiki/te-docs/synthesis/js-sdk-cheatsheet.md +538 -0
  352. package/wiki/te-docs/synthesis/restful-api-reference.md +363 -0
  353. package/wiki/te-docs/synthesis/sdk-selection.md +372 -0
  354. package/wiki/te-docs/synthesis/server-sdk-overview.md +449 -0
  355. 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
+ ###