1. 开启日志功能

开启神策分析 SDK 的日志打印。

"""
开启日志打印
:param enable: 是否开启日志打印,true 开启日志打印;false 关闭日志打印
"""
static void EnableLog(bool enable);
CPP

2. 设置公共属性

设置每个事件都带有的公共属性。

"""
设置事件公共属性
:param properties: 要设置的公共属性
"""
static void RegisterSuperProperties(const PropertiesNode &properties);
CPP

建议在初始化 SDK 后,紧接着调用此方法设置所有事件的公共属性。如果设置晚了,在设置公共属性前的事件,是不会带有公共属性的。

3. 清除公共属性

清除设置的公共属性内容。

static void ClearSuperProperties()
CPP

4. 激活事件

记录安装事件,安装后首次启动调用,服务端可以根据 IP 等匹配渠道信息。多次调用会多次触发,SDK 内部没有做单次触发限制。

"""
记录激活事件
:param event_name: 激活事件名,建议使用 AppInstall
:properties: 激活事件自定义属性
"""
static void TrackInstallation(const string &event_name, const PropertiesNode &properties);
CPP

5. 登录

记录“登录”,将登录前后 ID 绑定。之后会使用 login_id 作为 distinct_id。

"""
登录
:param login_id: 登录 ID
"""
static void Login(const string &login_id);
CPP

6. 触发自定义埋点事件

SDK 初始化后可以调用 Track 方法追踪用户行为事件,并为事件添加自定义属性:

"""
触发自定义事件
:param event_name: 事件名
"""
static void Track(const string &event_name);

"""
触发自定义事件
:param event_name: 事件名
:param properties: 事件自定义属性
"""
static void Track(const string &event_name, const PropertiesNode &properties);
CPP

7. 设置用户属性

7.1. 每次更新新值

使用以下方法可以设置用户属性,同一个 key 多次设置时,value 值会进行覆盖替换。

static void ProfileSet(const PropertiesNode &properties);  
static void ProfileSetString(const string &property_name, const string &str_value);
static void ProfileSetNumber(const string &property_name, int number_value);
static void ProfileSetNumber(const string &property_name, double number_value);
static void ProfileSetBool(const string &property_name, bool bool_value);
CPP

7.2. 保留初次属性

对于需要保证只有首次设置时有效的属性,如用户首次充值金额、首次设置的昵称等,可以使用 ProfileSetOnce 接口进行记录。与 ProfileSet 方法不同的是,如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建:

static void ProfileSetOnce(const PropertiesNode &properties);
static void ProfileSetOnceString(const string &property_name, const string &str_value);
static void ProfileSetOnceNumber(const string &property_name, int number_value);
static void ProfileSetOnceNumber(const string &property_name, double number_value);
static void ProfileSetOnceBool(const string &property_name, bool bool_value);
CPP

7.3. 数值属性累加

针对一些数值属性,如消费金额、用户积分等属性,我们可以使用 ProfileIncrement 对原值进行累加,神策会自动计算并保存累加之后的值

7.3.1. 给用户的某一个属性进行累加操作

"""
给单个用户属性值进行累加操作,只支持 int 类型
:param property_name: 用户属性
:param number_value: 属性要增加的值
"""
static void ProfileIncrement(const string $property_name, int number_value)
CPP

7.3.2. 给用户的多个属性进行累加操作

"""
给用户的多个属性进行累加操作,支持 int、double 类型
:param properties: 用户属性键值对
"""
static void ProfileIncrement(const PropertiesNode &properties);
CPP

7.4. 列表属性追加

对于列表类型用户属性,如用户喜爱看的电影、用户点评过的餐厅等属性,可以使用方法 ProfileAppend 进行追加一些新值:

"""
列表属性追加
:param properties: 用户属性键值对
"""
static void ProfileAppend(const PropertiesNode &properties);
CPP

8. 上传数据

8.1. Flush

主动调用此函数,将 SDK 保存的埋点数据按固定条数(30 条)打包上传至服务端,如果上传失败,SDK 会尝试重新上传。

static bool Flush();
CPP

8.2. FlushPart

主动调用此函数,将 SDK 保存的埋点数据上传至服务端。调用此函数需要设置 “单次上传条数” 和 “是否丢弃上传失败数据” 参数。

"""
上报埋点数据
:param part_size: 单次上传事件的条数
:param drop_failed_record: 是否丢弃上传失败的数据
:return: 
"""
static bool FlushPart(size_t part_size, bool drop_failed_record);
CPP

9. 清空发送队列

主动调用此函数,将 SDK 发送队列中的埋点数据清空掉。

static void ClearQueue();
CPP

10. 主动缓存数据开关

v0.6 版本 引入此方法,是否允许主动将队列中埋点事件数据保存至本地文件中,默认是 false。

"""
是否允许主动缓存数据
:param enable: 是否开启主动缓存数据
"""
static void AppendRecordsToDisk(bool enable);
CPP

11. 缓存队列中数据至本地文件

v0.6 版本 引入此方法,将队列中埋点事件数据缓存至本地文件中,并删除队列中数据内容。只有当"主动缓存数据开关"为 true 时此函数才会生效。

static void DumpAllRecordsToDisk();
CPP

12. 设置 Cookie

v0.7 版本 引入此方法,设置事件上传时 https header 中  Cookie 内容。

"""
设置 Cookie
:param cookie: 需要设置的 Cookie
:param enable: 是否需要做 encode 编码
"""
static void SetCookie(const string &cookie, bool encode);
CPP

13. 获取 Cookie

v0.7 版本 引入此方法,获取设置的 HTTPS Header 中的 Cookie 内容。

"""
获取 Cookie
:param decode: 是否需要做 decode 编码
"""
static string GetCookie(bool decode);
CPP


14. 使用 HTTPS 数据接收地址

使用 HTTPS 数据接收地址需要 curl 配置了 OpenSSL(建议)或 WinSSL(默认),我们提供的编译好的 curl 使用了 OpenSSL。

另外在某些操作系统里,curl 无法正确获取 ca-bundle,有两种方法处理:

  1. 不添加 ca-bundle,不校验服务端 SSL 证书(会降低传输安全性,建议仅测试时使用)。具体做法是在 sensors_analytics_sdk.cpp 文件中搜索 CURLOPT_SSL_VERIFYPEER,取消相关两行代码的注释;
  2.  附带 ca-bundle 下载地址 。具体做法是在 sensors_analytics_sdk.cpp 文件中搜索 CURLOPT_CAINFO,取消该行注释,并指定证书文件的路径。