@thinkingai/ae-cli 1.0.28 → 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 (360) hide show
  1. package/README.md +1 -16
  2. package/README.zh.md +1 -16
  3. package/dist/{auth-H2376DEF.js → auth-DYC2BGLM.js} +2 -2
  4. package/dist/{auth-5NSDQFQB.js → auth-GHBMJ5ZR.js} +31 -12
  5. package/dist/{chunk-CLJF7MQA.js → chunk-2DUEAXV3.js} +1 -1
  6. package/dist/chunk-5OC7CYCG.js +98 -0
  7. package/dist/{chunk-SRJIAOBN.js → chunk-6W4QOZAL.js} +10 -0
  8. package/dist/{chunk-LU7SXK4Q.js → chunk-BJX3GXWC.js} +2 -2
  9. package/dist/{chunk-WCHI7725.js → chunk-DMMEPCST.js} +47 -6
  10. package/dist/{chunk-IMBKVXKY.js → chunk-EGEIXA2Z.js} +82 -10
  11. package/dist/{chunk-AD5V3ZPJ.js → chunk-I5CRVM2S.js} +98 -10
  12. package/dist/chunk-NOO24N7W.js +11 -0
  13. package/dist/{chunk-GSJGPNKK.js → chunk-PN3OS34E.js} +1 -1
  14. package/dist/{chunk-CAQYQA4R.js → chunk-RSHMZ3LG.js} +15 -1
  15. package/dist/{client-FCMK3XEK.js → client-2UJ63MVQ.js} +3 -3
  16. package/dist/{config-64G36TJL.js → config-NCUGK6NS.js} +3 -3
  17. package/dist/index.js +2549 -29
  18. package/dist/{model-EZ6K7FXI.js → model-SJSOZTRS.js} +5 -7
  19. package/dist/{raw-VEF3D6UD.js → raw-7NVWSVJP.js} +4 -4
  20. package/dist/{sync-NRODEVNH.js → sync-GRVO4K3U.js} +120 -23
  21. package/dist/{te-agent-7U7JLJKU.js → te-agent-KZRIEN4N.js} +468 -47
  22. package/dist/{te-analysis-A2OSGHQ4.js → te-analysis-VAR4KUOK.js} +145 -28
  23. package/dist/{te-audience-LI67PPGO.js → te-audience-KMKYI2YJ.js} +23 -14
  24. package/dist/{te-common-35WVU3C5.js → te-common-WNCZB7R7.js} +5 -4
  25. package/dist/{te-community-LEAP6PWT.js → te-community-JEEFXPB3.js} +11 -10
  26. package/dist/{te-dataops-N2LGZBOX.js → te-dataops-GD3XBYCS.js} +33 -32
  27. package/dist/{te-engage-H7C72Z46.js → te-engage-4XHCTS6I.js} +5 -4
  28. package/dist/{te-kb-I2OKTBAI.js → te-kb-B62KFP2A.js} +97 -7
  29. package/dist/{te-meta-HBTIEDRO.js → te-meta-EPZGQN56.js} +10 -9
  30. package/dist/{te-team-EM5OWRQL.js → te-team-YY24VORI.js} +16 -12
  31. package/dist/tracking/i18n/resources/cli/en.json +153 -0
  32. package/dist/tracking/i18n/resources/cli/ja.json +153 -0
  33. package/dist/tracking/i18n/resources/cli/ko.json +153 -0
  34. package/dist/tracking/i18n/resources/cli/zh.json +153 -0
  35. package/package.json +9 -3
  36. package/skills/ae-agent/SKILL.md +66 -26
  37. package/skills/ae-analysis/SKILL.md +108 -8
  38. package/skills/ae-analysis/references/cancel_query.md +39 -0
  39. package/skills/ae-analysis/references/drilldown_user_events.md +4 -2
  40. package/skills/ae-analysis/references/drilldown_users.md +4 -2
  41. package/skills/ae-analysis/references/get_bi_panel_detail.md +35 -0
  42. package/skills/ae-analysis/references/list_alerts.md +1 -1
  43. package/skills/ae-analysis/references/list_bi_panels.md +35 -0
  44. package/skills/ae-analysis/references/list_cluster_members.md +4 -1
  45. package/skills/ae-analysis/references/list_dashboards.md +1 -1
  46. package/skills/ae-analysis/references/list_entities.md +1 -1
  47. package/skills/ae-analysis/references/list_events.md +1 -1
  48. package/skills/ae-analysis/references/list_metrics.md +1 -1
  49. package/skills/ae-analysis/references/list_project_mark_times.md +1 -1
  50. package/skills/ae-analysis/references/list_properties.md +1 -1
  51. package/skills/ae-analysis/references/list_public_access_links.md +1 -1
  52. package/skills/ae-analysis/references/list_reports.md +1 -1
  53. package/skills/ae-analysis/references/list_tag_members.md +4 -1
  54. package/skills/ae-analysis/references/query_adhoc.md +6 -5
  55. package/skills/ae-analysis/references/query_bi_panel_data.md +58 -0
  56. package/skills/ae-analysis/references/query_dashboard_report_data.md +4 -1
  57. package/skills/ae-analysis/references/query_entity_details.md +5 -2
  58. package/skills/ae-analysis/references/query_event_details.md +4 -1
  59. package/skills/ae-analysis/references/query_report_data.md +2 -2
  60. package/skills/ae-analysis-global/SKILL.md +3 -1
  61. package/skills/ae-analysis-intent/SKILL.md +132 -0
  62. package/skills/ae-data-integration-helper/SKILL.md +242 -0
  63. package/skills/ae-data-integration-helper/references/android_sdk_faq.md +179 -0
  64. package/skills/ae-data-integration-helper/references/c_sdk_compilation.md +83 -0
  65. package/skills/ae-data-integration-helper/references/c_sdk_faq.md +416 -0
  66. package/skills/ae-data-integration-helper/references/cocoscreator_sdk_faq.md +123 -0
  67. package/skills/ae-data-integration-helper/references/cpp_server_sdk_faq.md +365 -0
  68. package/skills/ae-data-integration-helper/references/index.md +56 -0
  69. package/skills/ae-data-integration-helper/references/ios_sdk_faq.md +118 -0
  70. package/skills/ae-data-integration-helper/references/java_sdk_faq.md +406 -0
  71. package/skills/ae-data-integration-helper/references/javascript_sdk_faq.md +129 -0
  72. package/skills/ae-data-integration-helper/references/logbus2_guide.md +309 -0
  73. package/skills/ae-data-integration-helper/references/logbus2_parser_plugin.md +348 -0
  74. package/skills/ae-data-integration-helper/references/minigame_sdk_faq.md +115 -0
  75. package/skills/ae-data-integration-helper/references/miniprogram_sdk_faq.md +118 -0
  76. package/skills/ae-data-integration-helper/references/python_sdk_faq.md +232 -0
  77. package/skills/ae-data-integration-helper/references/restful_api_notes.md +74 -0
  78. package/skills/ae-data-integration-helper/references/sdk_log_guide.md +316 -0
  79. package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +107 -0
  80. package/skills/ae-data-integration-helper/references/unity_sdk_faq.md +115 -0
  81. package/skills/ae-generate-tracking-code/SKILL.md +629 -0
  82. package/skills/ae-generate-tracking-code/references/autotrack-enum.md +183 -0
  83. package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +202 -0
  84. package/skills/ae-generate-tracking-code/references/datax-config.md +43 -0
  85. package/skills/ae-generate-tracking-code/references/debug-script.md +102 -0
  86. package/skills/ae-generate-tracking-code/references/logbus-config.md +200 -0
  87. package/skills/ae-generate-tracking-code/references/modes.md +83 -0
  88. package/skills/ae-generate-tracking-code/references/restful-call.md +36 -0
  89. package/skills/ae-generate-tracking-code/references/sdk-index.md +128 -0
  90. package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +206 -0
  91. package/skills/ae-generate-tracking-code/references/snippet-delivery.md +394 -0
  92. package/skills/ae-generate-tracking-code/references/te-api.md +181 -0
  93. package/skills/ae-generate-tracking-plan/SKILL.md +1083 -0
  94. package/skills/ae-generate-tracking-plan/references/autotrack-events.md +273 -0
  95. package/skills/ae-generate-tracking-plan/references/business-dimension-mapping.md +425 -0
  96. package/skills/ae-generate-tracking-plan/references/te-api.md +100 -0
  97. package/skills/ae-generate-tracking-plan/references/xlsx-schema.md +152 -0
  98. package/skills/ae-kb/SKILL.md +38 -5
  99. 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
  100. 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
  101. 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
  102. 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
  103. package/tracking-plan-template/RPG/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +72 -0
  104. package/tracking-plan-template/RPG/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
  105. 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
  106. 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
  107. package/tracking-plan-template/Slots/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +80 -0
  108. package/tracking-plan-template/Slots/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
  109. 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
  110. 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
  111. package/tracking-plan-template/TE/345/256/230/346/226/271/346/250/241/346/235/277_dataTrackSample.md +40 -0
  112. package/tracking-plan-template/TE/345/256/230/346/226/271/346/250/241/346/235/277_dataTrackSample.xlsx +0 -0
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. 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
  123. 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
  124. 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
  125. 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
  126. 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
  127. 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
  128. 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
  129. 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
  130. 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
  131. 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
  132. 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
  133. 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
  134. 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
  135. 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
  136. 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
  137. 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
  138. 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
  139. package/wiki/te-docs/index.md +225 -0
  140. package/wiki/te-docs/raw/advanced-data-type/first-event-check.md +66 -0
  141. package/wiki/te-docs/raw/advanced-data-type/updated-event.md +87 -0
  142. package/wiki/te-docs/raw/advanced-data-type.md +16 -0
  143. package/wiki/te-docs/raw/data-ingestion-guide/about-gdpr.md +55 -0
  144. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/automatic-event-tracking.md +431 -0
  145. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/debugging-and-logging.md +49 -0
  146. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/multi-instance.md +66 -0
  147. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/preset-properties.md +466 -0
  148. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/third-party-integration.md +127 -0
  149. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced.md +513 -0
  150. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/compliance.md +24 -0
  151. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/release-notes.md +177 -0
  152. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android.md +228 -0
  153. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c/c-advanced.md +419 -0
  154. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c/release-notes.md +45 -0
  155. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c.md +110 -0
  156. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/client-side-sdk-faq.md +52 -0
  157. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp/cpp-advanced.md +366 -0
  158. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp/release-notes.md +103 -0
  159. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp.md +201 -0
  160. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/compliance.md +26 -0
  161. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/automatically-track-events.md +117 -0
  162. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/debugging-and-logging.md +47 -0
  163. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/preset-properties.md +52 -0
  164. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced.md +267 -0
  165. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/release-notes.md +82 -0
  166. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter.md +139 -0
  167. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/compliance.md +26 -0
  168. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/automatically-track-events.md +121 -0
  169. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/debugging-and-logging.md +54 -0
  170. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/preset-properties.md +18 -0
  171. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced.md +305 -0
  172. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/release-notes.md +79 -0
  173. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native.md +137 -0
  174. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/release-notes.md +24 -0
  175. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/automatically-track-events.md +54 -0
  176. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/debugging-and-logging.md +53 -0
  177. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/multi-instance.md +42 -0
  178. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/preset-properties.md +119 -0
  179. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/support-native.md +81 -0
  180. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced.md +331 -0
  181. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app.md +156 -0
  182. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform.md +12 -0
  183. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/automatic-event-tracking.md +29 -0
  184. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/debugging-and-logging.md +47 -0
  185. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/multi-instance.md +21 -0
  186. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/preset-properties.md +249 -0
  187. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced.md +301 -0
  188. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/compliance.md +24 -0
  189. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/release-notes.md +51 -0
  190. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x.md +281 -0
  191. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/automatic-event-tracking.md +70 -0
  192. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/debugging-and-logging.md +57 -0
  193. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/native-support.md +104 -0
  194. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/preset-properties.md +91 -0
  195. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance.md +374 -0
  196. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/compliance.md +35 -0
  197. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/release-notes.md +109 -0
  198. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator.md +170 -0
  199. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/compliance.md +28 -0
  200. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/automatic-event-tracking.md +29 -0
  201. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/debugging-and-logging.md +58 -0
  202. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/preset-properties.md +43 -0
  203. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced.md +204 -0
  204. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/release-notes.md +29 -0
  205. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona.md +269 -0
  206. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/compliance.md +24 -0
  207. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/release-notes.md +177 -0
  208. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/automatic-event-tracking.md +119 -0
  209. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/debugging-and-logging.md +47 -0
  210. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/multi-instance.md +50 -0
  211. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/native-pluggable.md +43 -0
  212. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/preset-properties.md +212 -0
  213. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/third-party-integration.md +77 -0
  214. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced.md +396 -0
  215. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity.md +176 -0
  216. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/compliance.md +24 -0
  217. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/release-notes.md +81 -0
  218. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/automatic-event-tracking.md +79 -0
  219. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/debugging-and-logging.md +31 -0
  220. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/preset-properties.md +25 -0
  221. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/third-party-integrations.md +141 -0
  222. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced.md +278 -0
  223. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal.md +190 -0
  224. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine.md +14 -0
  225. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/h5-and-app-sdk-connection.md +147 -0
  226. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/instant-app-and-game.md +24 -0
  227. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/compliance.md +24 -0
  228. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/automatic-event-tracking.md +272 -0
  229. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/debugging-and-logging.md +77 -0
  230. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/multi-instance.md +142 -0
  231. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/preset-properties.md +484 -0
  232. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/third-party-integrations.md +132 -0
  233. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced.md +682 -0
  234. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/release-notes.md +163 -0
  235. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios.md +304 -0
  236. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/compliance.md +29 -0
  237. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/automatic-event-tracking.md +136 -0
  238. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/debugging-and-logging.md +48 -0
  239. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/multi-instance.md +50 -0
  240. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/preset-properties.md +132 -0
  241. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced.md +462 -0
  242. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/release-notes.md +107 -0
  243. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript.md +208 -0
  244. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced/debugging-and-logging.md +62 -0
  245. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced/preset-properties.md +118 -0
  246. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced.md +556 -0
  247. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos.md +231 -0
  248. package/wiki/te-docs/raw/data-ingestion-guide/client-sdk.md +25 -0
  249. package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/filebeat-logstash-user-guide.md +610 -0
  250. package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/logbus2-user-guide.md +1215 -0
  251. package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/ta-datax-writer-plugin-user-guide.md +278 -0
  252. package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools.md +15 -0
  253. package/wiki/te-docs/raw/data-ingestion-guide/privacy-policy.md +38 -0
  254. package/wiki/te-docs/raw/data-ingestion-guide/restful-api-user-guide.md +155 -0
  255. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging-FM9Cwz.md +37 -0
  256. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging-RSyfw7.md +41 -0
  257. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging.md +89 -0
  258. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties-OxzWw.md +126 -0
  259. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties-VuE3wr.md +126 -0
  260. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties.md +126 -0
  261. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced-IauKwI.md +175 -0
  262. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced-YAilwk.md +210 -0
  263. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced.md +211 -0
  264. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes-PVazwa.md +62 -0
  265. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes-TADbwY.md +50 -0
  266. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes.md +69 -0
  267. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c-V2W3wv.md +131 -0
  268. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c-Zf9Jwl.md +179 -0
  269. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c.md +189 -0
  270. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced/debugging-and-logging.md +38 -0
  271. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced/preset-properties.md +126 -0
  272. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced.md +113 -0
  273. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/release-notes.md +34 -0
  274. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang.md +155 -0
  275. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced/debugging-and-logging.md +42 -0
  276. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced/preset-properties.md +126 -0
  277. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced.md +157 -0
  278. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/release-notes.md +72 -0
  279. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang.md +148 -0
  280. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced/debugging-and-logging.md +49 -0
  281. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced/preset-properties.md +126 -0
  282. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced.md +223 -0
  283. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/release-notes.md +88 -0
  284. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java.md +174 -0
  285. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced/debugging-and-logging.md +46 -0
  286. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced/preset-properties.md +126 -0
  287. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced.md +182 -0
  288. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/release-notes.md +61 -0
  289. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua.md +121 -0
  290. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced/debugging-and-logging.md +55 -0
  291. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced/preset-properties.md +126 -0
  292. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced.md +225 -0
  293. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/release-notes.md +45 -0
  294. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs.md +141 -0
  295. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced/debugging-and-logging.md +41 -0
  296. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced/preset-properties.md +126 -0
  297. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced.md +216 -0
  298. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/release-notes.md +45 -0
  299. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php.md +173 -0
  300. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced/debugging-and-logging.md +40 -0
  301. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced/preset-properties.md +126 -0
  302. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced.md +206 -0
  303. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/release-notes.md +51 -0
  304. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python.md +116 -0
  305. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/release-notes.md +44 -0
  306. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced/debugging-and-logging.md +47 -0
  307. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced/preset-properties.md +126 -0
  308. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced.md +189 -0
  309. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby.md +142 -0
  310. package/wiki/te-docs/raw/data-ingestion-guide/server-sdk.md +22 -0
  311. package/wiki/te-docs/raw/data-ingestion-guide/thinkingdata-privacy-policy.md +37 -0
  312. package/wiki/te-docs/raw/data-ingestion-guide.md +48 -0
  313. package/wiki/te-docs/raw/preparations-before-data-ingestion/data-rules.md +396 -0
  314. package/wiki/te-docs/raw/preparations-before-data-ingestion/preset-properties-and-system-fields.md +957 -0
  315. package/wiki/te-docs/raw/preparations-before-data-ingestion/user-identification-rules.md +723 -0
  316. package/wiki/te-docs/raw/preparations-before-data-ingestion.md +203 -0
  317. 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
  318. 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
  319. 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
  320. 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
  321. 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
  322. 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
  323. package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony.md +172 -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//345/220/210/350/247/204/346/214/207/345/215/227.md +37 -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//346/233/264/346/226/260/346/227/245/345/277/227.md +209 -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//345/244/232/345/256/236/344/276/213.md +71 -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//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
  328. 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
  329. 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
  330. 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
  331. 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
  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//345/220/210/350/247/204/346/214/207/345/215/227.md +26 -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//346/233/264/346/226/260/346/227/245/345/277/227.md +32 -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//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
  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/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
  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/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
  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/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227.md +236 -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/cocos2d-lua.md +200 -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//346/233/264/346/226/260/346/227/245/345/277/227.md +83 -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/native/346/224/257/346/214/201.md +66 -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//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
  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/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
  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/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
  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/egret//350/277/233/351/230/266/346/214/207/345/215/227.md +615 -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/egret.md +166 -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//346/233/264/346/226/260/346/227/245/345/277/227.md +87 -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/native/346/224/257/346/214/201.md +71 -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//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
  349. 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
  350. 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
  351. 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
  352. 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
  353. package/wiki/te-docs/schema.md +16 -0
  354. package/wiki/te-docs/synthesis/batch-ingest-comparison.md +324 -0
  355. package/wiki/te-docs/synthesis/js-sdk-cheatsheet.md +538 -0
  356. package/wiki/te-docs/synthesis/restful-api-reference.md +363 -0
  357. package/wiki/te-docs/synthesis/sdk-selection.md +372 -0
  358. package/wiki/te-docs/synthesis/server-sdk-overview.md +449 -0
  359. package/dist/chunk-KAEZTSXN.js +0 -99
  360. package/dist/chunk-OJDNO5QY.js +0 -63
@@ -0,0 +1,419 @@
1
+ ---
2
+ code: csharp_sdk_advanced
3
+ name: "C#-Advanced"
4
+ wikiToken: Lx4bwX6lEiEdy7kLndmcs86JnSh
5
+ parentWikiToken: ENH2wrxtFicwM7koUgtcPsaCnOE
6
+ updateTime: 1774252000000
7
+ sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=csharp_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 `SetIdentity` to set the distinct ID:
18
+ ```csharp
19
+ TDAnalytics.SetDistinctId("Thinker");
20
+ TDAnalytics.GetDistinctId()
21
+ ```
22
+
23
+ ### **1.2 Login**
24
+ 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 `Log``o``ut` is called. The previous account ID would be replaced if `Login` has been called multiple times.
25
+ ```csharp
26
+ TDAnalytics.Login("TA");
27
+ ```
28
+
29
+ <quote-container>
30
+ **Login events wouldn't be uploaded in this method.**
31
+ </quote-container>
32
+
33
+ ### **1.3 Removing Account ID**
34
+ 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.
35
+ ```java
36
+ TDAnalytics.Logout();
37
+ ```
38
+
39
+ 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.
40
+ <quote-container>
41
+ **Logout events wouldn't be uploaded in this method.**
42
+ </quote-container>
43
+
44
+ ## **Sending Events**
45
+ 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 service scenario.
46
+ ### **2.1 Ordinary Events**
47
+ 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:
48
+ ```csharp
49
+ Dictionary<string, Object> dic = new Dictionary<string, object>();
50
+ dic.Add("product_name", "product name");
51
+ TDAnalytics.Track( "product_buy",dic);
52
+ ```
53
+
54
+ ### **2.2 First Events**
55
+ 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.
56
+ ```csharp
57
+ Dictionary<string, Object> dic = new Dictionary<string, object>();
58
+ dic.Add("key", "value");
59
+ TDFirstEventModel firstEventModel = new TDFirstEventModel("device_activation", dic);
60
+ TDAnalytics.Track(firstEventModel);
61
+ ```
62
+
63
+ 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:
64
+ ```csharp
65
+ Dictionary<string, Object> dic = new Dictionary<string, object>();
66
+ dic.Add("key", "value");
67
+ TDFirstEventModel firstEventModel = new TDFirstEventModel("device_activation", dic,"TA");
68
+ TDAnalytics.Track(firstEventModel);
69
+ ```
70
+
71
+ <quote-container>
72
+ Note: Since the server has to check whether the event is the First Event, the first event will be put in storage one hour later by default.
73
+ </quote-container>
74
+
75
+ ### **2.3 Updatable Events**
76
+ 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.
77
+ ```csharp
78
+ //The event property status is 3 after reporting, with the price being 100
79
+ Dictionary<string, Object> dic = new Dictionary<string, object>();
80
+ dic.Add("price", 100);
81
+ dic.Add("status",3);
82
+ TDUpdatableEventModel updatableEventModel = new TDUpdatableEventModel("UPDATABLE_EVENT", dic, "updateEventId");
83
+ TDAnalytics.Track(updatableEventModel);
84
+
85
+ //The event property status is 5 after reporting, with the price remaining the same
86
+ Dictionary<string, Object> dic1 = new Dictionary<string, object>();
87
+ dic1.Add("status",5);
88
+ TDUpdatableEventModel updatableEventModel = new TDUpdatableEventModel("UPDATABLE_EVENT", dic1,"updateEventId");
89
+ TDAnalytics.Track(updatableEventModel);
90
+ ```
91
+
92
+ ### **2.4 Overwritable Events**
93
+ Despite the similarity with Updatable Events, Overwritable Events would replace all historical data with the latest date. 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.
94
+ ```csharp
95
+ // Instance: Assume the event name is OVERWRITE_EVENT when reporting an overwritable event
96
+ //The event property status is 3 after reporting, with the price being 100
97
+ Dictionary<string, Object> dic = new Dictionary<string, object>();
98
+ dic.Add("price", 100);
99
+ dic.Add("status",3);
100
+ TDOverwritableEventModel overwritableEventModel = new TDOverwritableEventModel("OVERWRITABLE_EVENT", dic,"eventId");
101
+ TDAnalytics.Track(overwritableEventModel);
102
+
103
+ //The event property status is 5 after reporting, with the price deleted
104
+ Dictionary<string, Object> dic1 = new Dictionary<string, object>();
105
+ dic1.Add("status",5);
106
+ TDOverwritableEventModel overwritableEventModel = new TDOverwritableEventModel("OVERWRITABLE_EVENT", dic1,"eventId");
107
+ TDAnalytics.Track(overwritableEventModel);
108
+ ```
109
+
110
+ ### **2.5 Common event properties**
111
+ Public event attributes refer to the attributes that are uploaded for each event.
112
+ #### 2.5.1 Static public event attributes
113
+ Static public event attributes are attributes that change infrequently and are carried by each event, such as user membership level. After setting static public event attributes through setSuperProperties, the SDK will obtain the set public event attributes as event attributes when collecting events.
114
+ ```javascript
115
+ Dictionary<string, object> superProperties = new Dictionary<string, object>();
116
+ superProperties["vip_level"] = 2;
117
+ TDAnalytics.SetSuperProperties(superProperties);
118
+ ```
119
+
120
+ Static public event attributes will be saved in the cache and do not need to be called every time the App is started. If the attribute already exists, the re-set attribute will overwrite the original attribute value; if the attribute did not exist before, a new attribute will be created. In addition to attribute settings, we also provide other APIs to manage static public event attributes to meet daily business needs.
121
+ ```javascript
122
+ //Clear a public event property
123
+ TDAnalytics.UnsetSuperProperties("Channel");
124
+ //Clear all public event properties
125
+ TDAnalytics.ClearSuperProperties();
126
+ //Get all public event properties
127
+ var superProperties = TDAnalytics.GetSuperProperties();
128
+ ```
129
+
130
+ #### 2.5.2 Dynamic public event attributes
131
+ Dynamic public event attributes are attributes that change frequently and are carried by each event, such as the number of gold coins of a user. After setting the dynamic public attribute class through SetDynamicSuperProperties, the SDK will automatically obtain the attributes when collecting events and add them to the triggered events.
132
+ ```javascript
133
+ static Dictionary<string, object> GetDynamicSuperProperties()
134
+ {
135
+ return new Dictionary<string, object> { { "coin", 10 } };
136
+ }
137
+
138
+ TDAnalytics.Init(config);
139
+ TDAnalytics.SetDynamicSuperProperties(GetDynamicSuperProperties);
140
+ ```
141
+
142
+ ### 2.6 Recording event duration
143
+ If you need to record the duration of an event, you can call timeEvent to start timing. Configure the event name you want to time. When you upload the event, the #duration attribute will be automatically added to your event attributes to indicate the recorded duration in seconds. It should be noted that there can only be one task being timed for the same event name.
144
+ ```javascript
145
+ //The user enters the product page and starts timing
146
+ TDAnalytics.TimeEvent("stay_shop");
147
+ /**do someting
148
+ .......
149
+ **/
150
+ //The user leaves the product page and the timing ends. The "stay_shop" event will have the attribute #duration indicating the duration of the event
151
+ TDAnalytics.Track("stay_shop");
152
+ ```
153
+
154
+ ## **3. User Properties**
155
+ User property setting APIs supported by TE include: `UserSet`,`UserSetOnce`,`UserAdd`,`UserUnset`,`UserDelete`,`UserAppend`
156
+ ### 3.1 UserSet
157
+ 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:
158
+ ```csharp
159
+ //the username now is TA
160
+ TDAnalytics.UserSet(new Dictionary<string, object>(){{"user_name", "TA"}});
161
+ //the userName now is TE
162
+ TDAnalytics.UserSet(new Dictionary<string, object>(){{"user_name", "TE"}});
163
+ ```
164
+
165
+ ### 3.2 UserSetOnce
166
+ 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:
167
+ ```csharp
168
+ //first_payment_time is 2018-01-01 01:23:45.678
169
+ TDAnalytics.UserSetOnce(new Dictionary<string, object>(){{"first_pay_time","2018-01-01 01:23:45.67"}});
170
+ //first_payment_time is still 2018-01-01 01:23:45.678
171
+ TDAnalytics.UserSetOnce(new Dictionary<string, object>(){{"first_pay_time","2018-12-31 01:23:45.678"}});
172
+ ```
173
+
174
+ ### 3.3 UserAdd
175
+ When you want to upload numeric attributes for cumulative operation, you can call `UserAdd`.
176
+ 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:
177
+ ```csharp
178
+ //in this case, the total_revenue is 30
179
+ TDAnalytics.UserAdd(new Dictionary<string, object>(){{"total_revenue",30}});
180
+ //in this case, the total_revenue is 678
181
+ TDAnalytics.UserAdd(new Dictionary<string, object>(){{"total_revenue",648}})
182
+ ```
183
+
184
+ <quote-container>
185
+ The set attribute key is a string, and the Value is only allowed to be a numeric value.
186
+ </quote-container>
187
+
188
+ ### 3.4 UserUnset
189
+ 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.
190
+ ```csharp
191
+ List<string> list2 = new List<string>();
192
+ list2.Add("nickname");
193
+ list2.Add("age");
194
+ TDAnalytics.UserUnSet(list2);
195
+ ```
196
+
197
+ ### 3.5 UserDelete
198
+ 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 obtain the events data triggered by the user.
199
+ ```csharp
200
+ TDAnalytics.UserDelete();
201
+ ```
202
+
203
+ ### 3.6 UserAppend
204
+ You can call `UserAppend` to add user properties of array type.
205
+ ```csharp
206
+ Dictionary<string, object> dictionary = new Dictionary<string, object>();
207
+ List<string> list6 = new List<string>();
208
+ list6.Add("true");
209
+ list6.Add("test");
210
+ dictionary.Add("arrkey4", list6);
211
+ TDAnalytics.UserAppend( dictionary);
212
+ ```
213
+
214
+ ## Encryption function
215
+ Starting from v2.0.0-beta.1, SDK supports the use of AES+RSA to encrypt data. The data encryption function requires the cooperation of the client and the server. Please consult the customer success personnel for specific usage methods.
216
+ ```javascript
217
+ TDConfig config = new TDConfig();
218
+ config.AppId = appid;
219
+ config.ServerUrl = server_url;
220
+ config.EnableEncrypt = true;
221
+ config.Version = 1;
222
+ config.PublicKey = "publickKey";
223
+ TDAnalytics.Init(config);
224
+ ```
225
+
226
+ ## **Others**
227
+ ### **5****.1 Printing Log**
228
+ 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.
229
+ ```cpp
230
+ // After enabling, the log will be viewed in the ta_event_log.txt file in the project root directory
231
+ TDAnalytics.EnableLogType(TDLogType.LogTxt);
232
+ ```
233
+
234
+ ### **5****.2** **Preset Properties of All Events**
235
+
236
+ <lark-table rows="10" cols="4" column-widths="169,152,140,259">
237
+
238
+ <lark-tr>
239
+ <lark-td>
240
+ ** Property name **
241
+ </lark-td>
242
+ <lark-td>
243
+ **Display name **
244
+ </lark-td>
245
+ <lark-td>
246
+ ** Property type **
247
+ </lark-td>
248
+ <lark-td>
249
+ ** Instruction **
250
+ </lark-td>
251
+ </lark-tr>
252
+ <lark-tr>
253
+ <lark-td>
254
+ #ip
255
+ </lark-td>
256
+ <lark-td>
257
+ IP address
258
+ </lark-td>
259
+ <lark-td>
260
+ Text
261
+ </lark-td>
262
+ <lark-td>
263
+ IP address of the user, based on which TE would get the geographical location of the user
264
+ </lark-td>
265
+ </lark-tr>
266
+ <lark-tr>
267
+ <lark-td>
268
+ #country
269
+ </lark-td>
270
+ <lark-td>
271
+ Country
272
+ </lark-td>
273
+ <lark-td>
274
+ Text
275
+ </lark-td>
276
+ <lark-td>
277
+ The country where the user is located; generated based on the IP address
278
+ </lark-td>
279
+ </lark-tr>
280
+ <lark-tr>
281
+ <lark-td>
282
+ #country_code
283
+ </lark-td>
284
+ <lark-td>
285
+ Country code
286
+ </lark-td>
287
+ <lark-td>
288
+ Text
289
+ </lark-td>
290
+ <lark-td>
291
+ 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
292
+ </lark-td>
293
+ </lark-tr>
294
+ <lark-tr>
295
+ <lark-td>
296
+ #province
297
+ </lark-td>
298
+ <lark-td>
299
+ Province
300
+ </lark-td>
301
+ <lark-td>
302
+ Text
303
+ </lark-td>
304
+ <lark-td>
305
+ The province or state where the user is located; generated based on the IP address
306
+ </lark-td>
307
+ </lark-tr>
308
+ <lark-tr>
309
+ <lark-td>
310
+ #city
311
+ </lark-td>
312
+ <lark-td>
313
+ City
314
+ </lark-td>
315
+ <lark-td>
316
+ Text
317
+ </lark-td>
318
+ <lark-td>
319
+ The city where the user is located; generated based on the IP address
320
+ </lark-td>
321
+ </lark-tr>
322
+ <lark-tr>
323
+ <lark-td>
324
+ #os
325
+ </lark-td>
326
+ <lark-td>
327
+ OS
328
+ </lark-td>
329
+ <lark-td>
330
+ Text
331
+ </lark-td>
332
+ <lark-td>
333
+ E.g., Android, iOS, Mac OS, etc.
334
+ </lark-td>
335
+ </lark-tr>
336
+ <lark-tr>
337
+ <lark-td>
338
+ #device_id
339
+ </lark-td>
340
+ <lark-td>
341
+ Device ID
342
+ </lark-td>
343
+ <lark-td>
344
+ Text
345
+ </lark-td>
346
+ <lark-td>
347
+ The ID of the user device; IDFV or UUID of the user for iOS; androidID for Android
348
+ </lark-td>
349
+ </lark-tr>
350
+ <lark-tr>
351
+ <lark-td>
352
+ #lib
353
+ </lark-td>
354
+ <lark-td>
355
+ SDK type
356
+ </lark-td>
357
+ <lark-td>
358
+ Text
359
+ </lark-td>
360
+ <lark-td>
361
+ The type of the SDK to which you access, e.g., Android,iOS, etc.
362
+ </lark-td>
363
+ </lark-tr>
364
+ <lark-tr>
365
+ <lark-td>
366
+ #lib_version
367
+ </lark-td>
368
+ <lark-td>
369
+ SDK version
370
+ </lark-td>
371
+ <lark-td>
372
+ Text
373
+ </lark-td>
374
+ <lark-td>
375
+ The version of the SDK to which you access
376
+ </lark-td>
377
+ </lark-tr>
378
+ </lark-table>
379
+
380
+ ### 5.3 Time Calibration
381
+ The SDK uses the local time as the event occurrence time by default. If the user manually modifies the device time and affects your business analysis, you can calibrate the time to ensure the accuracy of the event occurrence time. We provide a timestamp time calibration method.
382
+ - You can use the current timestamp obtained from the server to calibrate the SDK time. After that, all calls without a specified time, including event data and user attribute setting operations, will use the calibrated time as the occurrence time.
383
+ ```javascript
384
+ // 1585633785954 is the current unix timestamp in milliseconds, corresponding to Beijing time 2020-03-31 13:49:45
385
+ TDAnalytics.CalibrateTime(1585633785954);
386
+ ```
387
+
388
+ - You can also set automatic time calibration, after which the SDK will try to obtain the current time from the config interface and calibrate the SDK time. If the correct return result is not obtained, the local time will be used to report the data later.
389
+ ```javascript
390
+ TDConfig config = new TDConfig();
391
+ config.AppId = appid;
392
+ config.ServerUrl = server_url;
393
+ config.EnableAutoCalibrated = true;
394
+ TDAnalytics.Init(config);
395
+ ```
396
+
397
+ ### 5.4 Send data immediately
398
+ In some business scenarios, if you expect data to be reported to the TE server immediately, you can do so by calling the flush interface
399
+ ```javascript
400
+ TDAnalytics.Flush();
401
+ ```
402
+
403
+ ### 5.5 Get device ID
404
+ You can get the device ID by calling getDeviceId:
405
+ ```javascript
406
+ TDAnalytics.GetDeviceId();
407
+ ```
408
+
409
+ ### 5.6 Set the default time zone
410
+ By default, the SDK uses the local time when the interface is called as the event occurrence time for reporting. You can also specify the default time zone by setting the default time zone interface, so that all events will be aligned with the time zone you set:
411
+ ```javascript
412
+ TDConfig config = new TDConfig();
413
+ config.AppId = appid;
414
+ config.ServerUrl = server_url;
415
+ config.ZoneOffset = 5;
416
+ TDAnalytics.Init(config);
417
+ ```
418
+
419
+ Note: Aligning event times with a specified time zone will lose the device's local time zone information. If you need to keep the device's local time zone information, you currently need to add relevant attributes to the event yourself.
@@ -0,0 +1,45 @@
1
+ ---
2
+ code: client_csharp_sdk_release_note
3
+ name: "Release Notes"
4
+ wikiToken: Ob12wuqdUiupq4kKfBlcmSkPnUc
5
+ parentWikiToken: ENH2wrxtFicwM7koUgtcPsaCnOE
6
+ updateTime: 1774249215000
7
+ sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=client_csharp_sdk_release_note
8
+ ---
9
+
10
+ ## v2.0.1
11
+ **Date: 10/13/2025 **[**下载**](https%3A%2F%2Fdownload.thinkingdata.cn%2Fclient%2Fcsharp%2Ftd_analytics_csharp_client_v2.0.1.zip)
12
+ **Notes:**
13
+ - Known issues fixed
14
+ ## v2.0.0
15
+ **Date: 10/09/2025 **[**下载**](https%3A%2F%2Fdownload.thinkingdata.cn%2Fclient%2Fcsharp%2Ftd_analytics_csharp_client_v2.0.0.zip)
16
+ **Notes:**
17
+ - Supports automatic time calibration
18
+ - Supports timing events
19
+ - Newly added encryption function
20
+ - Supports custom time zone function
21
+ ## v1.3.0
22
+ **Date: 11/08/2023**
23
+ **Notes:**
24
+ - Code specifications and comment specifications
25
+ - Supports obtaining visitor ID
26
+ - Support timestamp calibration
27
+ - Get static public properties
28
+ - Add UserUniqAppend API
29
+ ## v1.2.0
30
+ **Date: **04/06/2023
31
+ **Notes:**
32
+ - Optimize code
33
+ - Compatible with mac os
34
+ ## v1.1.0
35
+ **Date:** 2022/09/27
36
+ **Notes:**
37
+ - Support for complex data types
38
+ - Standardize external API
39
+ ## v1.0.0
40
+ **Date:** 2022/06/09
41
+ **Notes:**
42
+ - Support setting of visitor ID and user account
43
+ - Support event and user attribute reporting
44
+ - Support reporting of first, update and rewrite events
45
+ - Support Windows data reporting
@@ -0,0 +1,110 @@
1
+ ---
2
+ code: csharp_client_sdk_installation
3
+ name: "C#"
4
+ wikiToken: ENH2wrxtFicwM7koUgtcPsaCnOE
5
+ parentWikiToken: KaFCwNeV3iRxjNkpT3QcDMg3n5V
6
+ updateTime: 1774251999000
7
+ sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=csharp_client_sdk_installation
8
+ ---
9
+ ::: tip
10
+ Before you begin, please read [Preparations before Data Ingestion](https://thinkingdata.feishu.cn/wiki/OhD8we9iai6Xk5kM1QNc8ITRnQe)
11
+ Supported platforms: Windows.
12
+ :::
13
+ **Latest version:** 2.0.1
14
+ **Update time:** 10/13/2025
15
+ **Resource download: **[SDK Source Code](https%3A%2F%2Fgithub.com%2FThinkingDataAnalytics%2Fcsharp-client-sdk)
16
+ ## 1. **SDK**** Integration**
17
+ ### 1.1 Download SDK
18
+ Download Source Code from [GitHub](https%3A%2F%2Fgithub.com%2FThinkingDataAnalytics%2Fcsharp-client-sdk), add the files in the `TDAnalyticsSDK` directory to the project.
19
+ The SDK relies on `Newtonsoft.Json` for json parsing. If you are using `Visual Studio`, please use `NuGet` to add `Newtonsoft.Json` library.
20
+ ### 1.2 Add dynamic library
21
+ - Download the dll and unzip it (you can download any one)
22
+ - [github link](https%3A%2F%2Fgithub.com%2FThinkingDataAnalytics%2Fcsharp-client-sdk%2Fblob%2Fmain%2Fdll%2Fta_csharp_sdk.zip)
23
+ - [official website link](https%3A%2F%2Fdownload.thinkingdata.cn%2Fclient%2Frelease%2Ftd_analytics_csharp_client.zip)
24
+ - For Windows platform, you can find the dll file in the windowswen folder and copy it to the project root directory. (Note: If the dll conflicts with the existing dll in the project, just use the existing one in the project)
25
+ <image token="VlfNbOkbdoVtTux2HEHcUhqpnxg" width="728" height="335" align="center"/>
26
+
27
+ - Mac platform
28
+ - Step 1: Install sqlite, curl, zlib, openssl through homebrew
29
+ - Step 2: Find the dll file in the macOS folder and copy it to the project root directory
30
+ <image token="U1rVbMHfToJZc3xPTcqcQ9RWndg" width="731" height="217" align="center"/>
31
+
32
+ ## **2. Initialization**
33
+ ```csharp
34
+ using ThinkingData.Analytics;
35
+ TDAnalytics.Init(APPID,SERVER_URL)
36
+ ```
37
+
38
+ Instruction on parameters:
39
+ - `APPID`: The APP ID of your project, which can be found on the project management page of the TE.
40
+ - `SERVER_URL`:
41
+ - If you are using a SaaS version, please check the receiver URL on this page
42
+ <image token="OOXjbbcBioOIm8x1ZPMcYlCFnFr" width="1280" height="1007" align="center"/>
43
+
44
+
45
+ - If you use the private deployment version, you can customize the data tracking URL .
46
+ ## **3. Common Features**
47
+ 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.
48
+ ### **3.1 Login**
49
+ 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 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.
50
+ ```csharp
51
+ TDAnalytics.Login("TA");
52
+ ```
53
+
54
+ <quote-container>
55
+ **Login events wouldn't be uploaded in this method.**
56
+ </quote-container>
57
+
58
+
59
+ ### **3.2 Sending Events**
60
+ 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:
61
+ ```csharp
62
+ Dictionary<string, object> dic = new Dictionary<string, object>();
63
+ dic.Add("channel", "te");//string
64
+ dic.Add("id", 618834);//number
65
+ dic.Add("isSuccess", true);//boolean
66
+ dic.Add("create_date", Convert.ToDateTime("2019-7-8 20:23:22"));//time
67
+ List<string> arr = new List<string>();
68
+ arr.Add("value");
69
+ dic.Add("arr", arr);//array
70
+ TDAnalytics.Track("product_buy", dic);
71
+ ```
72
+
73
+ 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.
74
+ ### **3.2 User Properties**
75
+ You can set user properties by calling `UserSet` 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:
76
+ ```csharp
77
+ TDAnalytics.UserSet(new Dictionary<string, object>(){{"user_name", "TA"}});
78
+ ```
79
+
80
+ ## **4. Best Practice**
81
+ The following sample code covers all the above-mentioned operations. It is recommended that the SDK be used in the following steps:
82
+ ```csharp
83
+ using ThinkingData.Analytics;
84
+
85
+ TDAnalytics.Init(APPID,SERVER_URL)
86
+ //if the user has logged in, the account ID of the user could be set as the unique identifier
87
+ TDAnalytics.Login("TA");
88
+ //track
89
+ Dictionary<string, Object> dic = new Dictionary<string, object>();
90
+ dic.Add("channel", "te");//string
91
+ dic.Add("id", 618834);//number
92
+ dic.Add("isSuccess", true);//boolean
93
+ dic.Add("create_date", Convert.ToDateTime("2019-7-8 20:23:22"));//time
94
+ List<string> arr = new List<string>();
95
+ arr.Add("value");
96
+ dic.Add("arr", arr);//array
97
+ TDAnalytics.Track("product_buy", dic);
98
+ // object
99
+ Dictionary<string, object> json = new Dictionary<string, object>();
100
+ json.Add("key", "value");
101
+ dic.Add("object", json);
102
+ //array object
103
+ List<Dictionary<string, object>> arr1 = new List<Dictionary<string, object>>();
104
+ Dictionary<string, object> json1 = new Dictionary<string, object>();
105
+ json1.Add("key", "value");
106
+ arr1.Add(json1);
107
+ dic.Add("objects", arr1);
108
+ //Set user properties
109
+ TDAnalytics.UserSet(new Dictionary<string, object>(){{"user_name", "TA"}});
110
+ ```
@@ -0,0 +1,52 @@
1
+ ---
2
+ code: client_sdk_faq
3
+ name: "Client-side SDK FAQ"
4
+ wikiToken: YQC3wSRR2iGPkYkAHieczG6ZnJe
5
+ parentWikiToken: KaFCwNeV3iRxjNkpT3QcDMg3n5V
6
+ updateTime: 1774252003000
7
+ sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=client_sdk_faq
8
+ ---
9
+
10
+ ## **What is the client-side ****SDK**** tracking policy?**
11
+ Native client-side SDK (including Unity, Unreal, Flutter, etc. ) data would be stored in the local database firstly. Data tracking would be triggered under the following situations:
12
+ - App enters the background
13
+ - Track once every 30S (can be set in TA background)
14
+ - Trigger tracking when the number of cached data exceeds 30 items (can be set in TE)
15
+ - Call flush interface actively
16
+ Mini-program, mini-game SDK, and JavaScript SDK would be reported in real-time without local storage.
17
+ ## **What is the value logic of the ****device ID****?**
18
+ The value logic of the device of native client-side SDK (including Unity, Unreal, Flutter, etc. ) is as follows:
19
+ - Android: Take Android ID as the value
20
+ For systems below Android 8.0, Android ID is the unique device identifier. It would only change after being re-flashed or reset. Shared by all apps. For systems of Android 8.0 or later versions, each combination of the app signature key, user, and the device has its unique ANDROID_ID value. Therefore, apps operating on the same device with different signature keys would no longer see the same Android ID (which also applies to the same user). A special condition: if the device on which the APP installed by the user is below 8.0, the APP was uninstalled later and reinstalled after the device was upgraded to 8.0, Android ID would become different. If the APP is not reinstalled, the Android ID would not change.
21
+ - iOS: obtain IDFV first. Use a random UUID if failed to obtain IDFV. The first device ID value would be stored in the key string and no longer change, although IDFC changes subsequently.
22
+ Mini-program, mini-game, and JavaScript interface could not obtain similar device numbers, with a random ID used as the device ID. If the user deletes the cache, the device ID would change.
23
+ ## **What is the lowest system version supported by client-side ****SDK****?**
24
+ The lowest version supported by the client-side SDK is Android 4.0 and iOS 8.0
25
+ ## **How to identify tracking problems?**
26
+ Common problems could be identified rapidly through client-side logs. We described how to enable client-side logs in various data ingestion guidance.
27
+ In Android, you can enable client-side logs by calling the `enableTrackLog` api. You can filter the logs of Android SDK through `ThinkingAnalytics`.
28
+ ```java
29
+ ThinkingAnalyticsSDK.enableTrackLog(true);
30
+ ```
31
+
32
+ In iOS, you can enable log printing by calling `setLogLevel` and filter logs of iOS SDK through `THINKING`.
33
+ ```objectivec
34
+ [ThinkingAnalyticsSDK setLogLevel:TDLoggingLevelDebug]
35
+ ```
36
+
37
+ After opening the logs, you can send the logs to our technical support engineer to help you identify the problem.
38
+ If you are not sure whether the receiver URL is correct, you can detect the accessibility of the receiver URL by inspecting the interface. Visit https://YOUR_RECEIVER_URL/health-check. If the page returns ok, it means the address of the receiving end is configured correctly.
39
+ Besides, with the functions of the [tracking management](https://thinkingdata.feishu.cn/wiki/K443wTChAiFc47kBz8ucXqVfnSf) module, you can also identify the problems related to data tracking swiftly.
40
+ ## **What are the precautions for data tracking through Unity ****SDK****?**
41
+ 1. The initialization of SDK is completed in Awake(). Therefore, the calling process could not be triggered in Awake
42
+ 2. All the interfaces could only be called in the main thread by default.
43
+ 3. We can tell whether the APP could enter the foreground or retreat to the background according to the life cycle of the components of the Android system. However, Unity could not ensure that the program could initialize SDK from the very beginning. Therefore, the first enable event could only be identified when the APP retreat to the background. Currently, we would supplement a ta_app_start (being tracked at a relatively late time) when the APP retreat to the background for the first time. However, the event time #event_time is correct and would not influence subsequent analysis)
44
+ ## **What is the content of crash events? How to track crash events?**
45
+
46
+ The client-side SDK supports the tracking of some crash logs. It is necessary to enable auto-tracking of APP Crash after SDK initialization. The event name corresponding to the crash event is: ta_app_crash.
47
+ Conditions under which crash event tracking would be triggered:
48
+ - Android platform: no anomaly is captured in the virtual machine
49
+ - iOS platform:
50
+ - Unix signal anomalies include: SIGABRT, SIGILL, SIGSEGV, SIGFPE, SIGBUS
51
+ - NSException anomaly
52
+ - Tracking of C$ anomaly in the Unity engine