# SDK 指南
易观方舟支持全端数据接入,接入前准备事项详见[技术接入准备工作](../prepare/README.md)
易观方舟SDK已全部开源,详见:[Github上的易观方舟SDK](https://github.com/analysys)
## 客户端 SDK
客户端 SDK 用于客户端,采集用户与应用界面产生交互的行为,这些行为只会在客户端发生,而不会传输到服务器端,常见的比如页面打开、按钮点击等。
| 客户端 SDK 类型 | 适用范围 |
| ------------------------------------------------------------------------------- | ------------------------- |
| [Android SDK](android/README.md) | 用于 Android 原生和 Hybrid App |
| [iOS SDK](ios/README.md) | 用于 iOS 原生和 Hybrid App |
| [JS SDK](js/README.md) | 用于 Web 网站和 H5 页面 |
| [微信小程序 SDK](wx/README.md) | 用于微信小程序 |
| [支付宝小程序 SDK](alipay/README.md) | 用于支付宝小程序 |
| [百度小程序 SDK](baidu/README.md) | 用于百度小程序 |
| [字节跳动小程序 SDK](bytedance/README.md) | 用于字节跳动小程序 |
| [飞书小程序 SDK](../../%E9%A3%9E%E4%B9%A6%E5%B0%8F%E7%A8%8B%E5%BA%8FSDK.md) | 用于飞书小程序 |
| [钉钉小程序 SDK](dingtalk/README.md) | 用于钉钉小程序 |
| [QQ小程序 SDK](qq/README.md) | 用于QQ小程序 |
| [快应用 SDK](quickapp.md) | 用于快应用联盟小程序 |
| [华为WeCode小程序](huaweiwecode/README.md) | 用于华为WeCode小程序 |
| [Flutter SDK](flutter-sdk.md) | 用与Flutter开发的应用 |
| [ReactNative SDK](reactnative-sdk.md) | 用与Reactnative开发的应用 |
## **服务端 SDK**
服务端** **SDK 应用于服务端,采集用户行为产生的业务结果数据,比如注册成功、支付成功等,是在程序与数据交互的界面埋点,能够更准确的记录业务数据的改变。
| 服务端 SDK 类型 | 适用范围 |
| --------------------------- | --------------------------------------------- |
| [Java SDK](java.md) | 用于服务端 Java 应用,如 Java Web 应用的后台服务 |
| [Python SDK](python.md) | 用于服务端 Python 应用,如 Python Web 应用的后台服务 |
| [PHP SDK](php.md) | 用于服务端 PHP 应用,如 PHP Web 应用的后台服务 |
| [C++ SDK](c++.md) | 用于服务端 C++ (也称CPP、C plus plus)应用,如 C++ 应用的后台服务 |
| [C# SDK](dotnet.md) | 用于服务端或客户端 C# 应用 |
| [Node JS SDK](node-sdk.md) | 用于服务端 Node 应用,如 Node Web 应用的后台服务 |
| [Lua SDK](lua-sdk.md) | 用于服务端 Lua 应用 |
| [Golang SDK](golang-sdk.md) | 用于服务端 Golang 应用 |
### 应用场景
**1 采集业务结果数据比客户端 SDK 更准确**
业务结果数据指注册、订单、支付等,会存在于业务数据库中的数据。相比客户端 SDK 更准确的原因有:1. 网络传输造成的丢数 2. 客户端SDK尚未上送数据时,页面已经跳转,造成一定比例的数据丢失,尤其是支付等会跳转到第三方服务再跳转回来的场景,数据丢失的比例会更大等等。
**2 关键业务变动,但用户没有行为**
有些数据客户端 SDK 无法采集到,比如货到付款数据、超时不支付订单自动取消数据、物流状态变化数据等,但这些数据对用户行为的业务结果分析至关重要,就可以使用服务端 SDK
**3 其他业务系统关键数据的同步**
比如CRM中客户跟进状态变化的数据,B2B企业客户付费情况变化的数据等
>[info] 数据量较小时,可采用服务端SDK,该场景还可使用 Restful-API 或导入工具实现
**4 业务系统历史数据导入**
比如历史注册、历史订单、历史支付等
>[info] 数据量较小时,可采用服务端SDK,该场景还可使用 Restful-API 或导入工具实现
>另外需注意:历史数据导入要先于通过埋点采集新发生的数据
### **注意事项**
#### **1 基础配置**
1. 数据接收地址:[`http://host:port`](http://hostport)
2. AppKey,确定数据上报的项目
**更多具体配置详见各个SDK的文档**
#### **2 必报数据**
>[info]
>**一句话概括:**
>
>**什么人,在什么时间,从什么地方来,在什么环境下,做了什么事,有什么结果**
**什么人**
1. isLogin:用户 ID 是否是登录 ID;采集业务结果数据时,该值一般为“是”,即“true”
2. aliasId:用户注册 ID,长度大于 0,且小于 255字符;需从客户端传递到服务端
3. distinctId:自定义设备身份标识,长度大于 0 且小于 255字符
**在什么时间**
xwhen:用户自定义时间戳(带毫秒的13位时间戳)
**从什么地方来**
session_id:由方舟客户端SDK生成,用于识别流量来源,从客户端传递到服务端后,才能在方舟渠道分析/Session分析等分析模型中,按来源类属性细分时,查看到不同来源下的相关数据
>[info] 如果分析渠道转化目标的事件比如注册成功等,是在服务端进行埋点的,一定要注意 session_id 的传递
**在什么环境下**
platform:平台类型,支持自定义
>[info] 为保证与用户发生行为的平台对应,便于更好的让数据还原真实用户行为,建议内容范围为:JS、WeChat、Android、iOS、Alipay、Baidu、ByteDance、DingTalk、QQMini、Quickapp 方舟客户端 SDK 所支持的平台,此时,需从客户端传递到服务端。
**做了什么事**
eventName:自定义事件 ID 标识(需与事件设计方案保持一致)
以字母开头的字符串,必须由字母、数字、下划线组成,$ 开头为预置事件/属性,不支持乱码、中文、空格等,长度范围1~100字符
#### **有什么结果**
properties:自定义事件属性
最多包含 100条(需与事件设计方案保持一致),且key是以字母开头的字符串,必须由字母、数字、下划线组成,字母不区分大小写,不支持乱码、中文、空格等,长度范围1~100字符;value 类型约束(String/Number/boolean/list/数组),若为字符串,最大长度 255 字符。
>[danger] 所有语言类型的服务端 SDK 使用时,上述字段均为必填字段,并遵循上述使用方法;否则,会出现数据缺失或无法对应的情况,导致数据无法反映真实用户行为,基于这样的数据进行的分析,无法帮助业务成长。
## **数据导入**
[数据导入](../import/README.md)
## **常见问题**
[SDK FAQ](sdk-faq/README.md)
- 产品简介
- 快速上手
- Step 1 安装部署
- Step 2 激活系统创建项目
- Step 3 开启您的分析旅程
- 1. 集成 SDK
- 2. 可视化埋点
- 3. 创建分析模型
- 附:埋点方案设计
- 附:数据分析思路
- 产品更新日志
- V5.5 新增LTV分析功能等
- V5.3 UI 升级、分布分析重构、维度表动态更新、细节优化等
- V5.2 新增归因分析、消息中心、重构埋点方案、优化看数据体验……
- V5.1.0317 体验优化& Bug修复
- V5.1 升级可视化埋点、增强权限控制……
- Part I 产品功能说明
- 名词解释
- 指标说明
- 看板
- 5.3.3 看板 UI 重构
- 分析
- 事件分析
- 渠道分析
- 渠道相关名词解释
- 来源识别规则
- 搜索引擎
- 社交媒体
- 小程序场景值
- Session 分析
- Session 规则
- 实时分析
- 留存分析
- 转化漏斗
- 智能路径
- 归因分析
- 热图分析
- Web/H5 热图
- APP 热图
- 分布分析
- 间隔分析
- 属性分析
- LTV 分析
- 多主体分析
- 自定义查询
- 用户
- 用户分群
- 用户探查
- 用户标签
- 标签体系应用概览
- 标签体系
- 标签生命周期管理
- 标签加工
- 如何自定义SQL创建标签
- 单用户档案
- 运营
- 广告跟踪
- 微信小程序渠道追踪
- 预置广告媒介和渠道
- App 推广监测(Beta版本)
- 电子邮件(即将下线)
- 短信(即将下线)
- 消息通知(即将下线)
- 项目管理
- 项目概览
- 项目角色管理
- 项目成员管理
- 数据接入管理
- 埋点方案
- 可视化埋点
- 集成SDK接入数据
- 数据验证
- 用户数据导入
- 微信小程序全埋点事件定义
- 元数据管理
- 元事件
- 虚拟事件
- 事件属性
- 用户属性
- Session 管理
- 页面组管理
- 维度表
- 服务集成配置
- 监控告警
- 智能监控
- 自定义监控
- 平台管理
- 企业概览
- 项目管理
- 成员管理
- 安全设置
- 企业设置
- 日志管理
- 帐号设置
- Part II 技术文档
- 技术接入准备工作
- 部署环境检测工具
- 数据模型
- 数据格式
- 预置事件和属性
- App预置事件/属性
- JS 预置事件/属性
- 如何准确识别用户
- 如何设计埋点方案
- 分平台上报数据 vs 跨平台打通
- SDK 指南
- Android SDK
- 快速集成
- 全埋点模块
- 消息推送模块
- Android Hybrid模式
- SDK Gradle集成方式
- 多渠道打包
- 易观小工具
- 合规相关
- iOS SDK
- 快速集成
- 全埋点介绍
- iOS Hybrid模式
- 消息推送模块
- JS SDK
- 快速集成
- JS SDK基础版
- JS SDK插件
- uni-app SDK
- 快速集成
- 打包原生APP
- 开启移动端全埋点
- uni-app SDK标准版
- 微信小程序 SDK
- 快速集成
- 微信小程序标准版
- 微信小程序插件版
- 微信小程序通用框架版
- 支付宝小程序 SDK
- 支付宝小程序标准版
- 支付宝小程序通用框架版
- 字节跳动小程序 SDK
- 字节跳动小程序标准版
- 字节跳动小程序通用框架版
- 百度小程序 SDK
- 百度小程序标准版
- 百度小程序通用框架版
- 钉钉小程序 SDK
- 钉钉小程序标准版
- 钉钉小程序通用框架版
- QQ小程序 SDK
- QQ小程序标准版
- QQ小程序通用框架版
- 快应用 SDK
- 华为WeCode小程序
- WeCode SDK 标准版
- WeCode SDK插件
- PhoneGap SDK
- mPaaS SDK
- ReactNative SDK
- Flutter SDK
- Java SDK
- Python SDK
- PHP SDK
- C++ SDK
- C# SDK
- Node JS SDK
- Lua SDK
- Golang SDK
- SDK FAQ
- identify与alias的区别
- 爬虫数据如何识别?
- 页面停留如何获取时间?
- 如果获取SDK及更新日志
- 代码埋点和无埋点有什么区别
- Web页面中发现丢失某一个事件
- 自研 SDK 注意事项
- 页面时长统计功能
- 飞书小程序 SDK
- 飞书小程序标准版
- 飞书小程序通用框架版
- Unreal Engine SDK
- 数据验证
- 客户端埋点验证
- Debug 数据验证
- 数据入库验证
- 数据导入
- 接口导入
- JAVA工具包
- 标准json文件导入
- csv格式导入
- 数据导入FAQ
- 数据导出
- JAVA工具包
- 事件数据导出
- 用户数据导出
- 直接从Kafka中消费数据
- 使用程序访问数据库
- 脚本工具
- API
- 分析API
- 事件分析
- 留存分析
- 自定义查询
- 转化漏斗
- 属性分析
- Session分析
- 渠道分析
- 分布分析
- 用户API
- 分群查询
- 用户档案
- 分群管理
- 管理API
- 权限管理
- 元数据管理
- 埋点方案管理
- 维度表管理
- 运营API
- 广告跟踪
- APP推广监测
- 平台管理API
- 项目管理
- 成员管理
- 第三方登录
- OAuth2.0登录
- LDAP登录
- GDPR 合规
- Part III 常见问题
- License 许可
- 产品试用及采购
- 参与贡献