开启日志功能
开启神策分析 SDK 的日志打印。
"""
开启日志打印
:param enable: 是否开启日志打印,true 开启日志打印;false 关闭日志打印
"""
static void EnableLog(bool enable);
设置公共属性
设置每个事件都带有的公共属性。
"""
设置事件公共属性
:param properties: 要设置的公共属性
"""
static void RegisterSuperProperties(const PropertiesNode &properties);
建议在初始化 SDK 后,紧接着调用此方法设置所有事件的公共属性。如果设置晚了,在设置公共属性前的事件,是不会带有公共属性的。
清除公共属性
清除设置的公共属性内容。
static void ClearSuperProperties()
激活事件
记录安装事件,安装后首次启动调用,服务端可以根据 IP 等匹配渠道信息。多次调用会多次触发,SDK 内部没有做单次触发限制。
"""
记录激活事件
:param event_name: 激活事件名,建议使用 AppInstall
:properties: 激活事件自定义属性
"""
static void TrackInstallation(const string &event_name, const PropertiesNode &properties);
登录
记录“登录”,将登录前后 ID 绑定。之后会使用 login_id 作为 distinct_id。
"""
登录
:param login_id: 登录 ID
"""
static void Login(const string &login_id);
触发自定义埋点事件
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);
设置用户属性
每次更新新值
使用以下方法可以设置用户属性,同一个 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);
保留初次属性
对于需要保证只有首次设置时有效的属性,如用户首次充值金额、首次设置的昵称等,可以使用 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);
数值属性累加
针对一些数值属性,如消费金额、用户积分等属性,我们可以使用 ProfileIncrement 对原值进行累加,神策会自动计算并保存累加之后的值
给用户的某一个属性进行累加操作
"""
给单个用户属性值进行累加操作,只支持 int 类型
:param property_name: 用户属性
:param number_value: 属性要增加的值
"""
static void ProfileIncrement(const string $property_name, int number_value)
给用户的多个属性进行累加操作
"""
给用户的多个属性进行累加操作,支持 int、double 类型
:param properties: 用户属性键值对
"""
static void ProfileIncrement(const PropertiesNode &properties);
列表属性追加
对于列表类型用户属性,如用户喜爱看的电影、用户点评过的餐厅等属性,可以使用方法 ProfileAppend 进行追加一些新值:
"""
列表属性追加
:param properties: 用户属性键值对
"""
static void ProfileAppend(const PropertiesNode &properties);
上传数据
Flush
主动调用此函数,将 SDK 保存的埋点数据按固定条数(30 条)打包上传至服务端,如果上传失败,SDK 会尝试重新上传。
static bool Flush();
FlushPart
主动调用此函数,将 SDK 保存的埋点数据上传至服务端。调用此函数需要设置 “单次上传条数” 和 “是否丢弃上传失败数据” 参数。
"""
上报埋点数据
:param part_size: 单次上传事件的条数
:param drop_failed_record: 是否丢弃上传失败的数据
:return:
"""
static bool FlushPart(size_t part_size, bool drop_failed_record);
清空发送队列
主动调用此函数,将 SDK 发送队列中的埋点数据清空掉。
static void ClearQueue();
主动缓存数据开关
在 v0.6 版本 引入此方法,是否允许主动将队列中埋点事件数据保存至本地文件中,默认是 false。
"""
是否允许主动缓存数据
:param enable: 是否开启主动缓存数据
"""
static void AppendRecordsToDisk(bool enable);
缓存队列中数据至本地文件
在 v0.6 版本 引入此方法,将队列中埋点事件数据缓存至本地文件中,并删除队列中数据内容。只有当"主动缓存数据开关"为 true 时此函数才会生效。
static void DumpAllRecordsToDisk();
设置 Cookie
在 v0.7 版本 引入此方法,设置事件上传时 https header 中 Cookie 内容。
"""
设置 Cookie
:param cookie: 需要设置的 Cookie
:param enable: 是否需要做 encode 编码
"""
static void SetCookie(const string &cookie, bool encode);
获取 Cookie
在 v0.7 版本 引入此方法,获取设置的 HTTPS Header 中的 Cookie 内容。
"""
获取 Cookie
:param decode: 是否需要做 decode 编码
"""
static string GetCookie(bool decode);
使用 HTTPS 数据接收地址
使用 HTTPS 数据接收地址需要 curl 配置了 OpenSSL(建议)或 WinSSL(默认),我们提供的编译好的 curl 使用了 OpenSSL。
另外在某些操作系统里,curl 无法正确获取 ca-bundle,有两种方法处理:
- 不添加 ca-bundle,不校验服务端 SSL 证书(会降低传输安全性,建议仅测试时使用)。具体做法是在 sensors_analytics_sdk.cpp 文件中搜索 CURLOPT_SSL_VERIFYPEER,取消相关两行代码的注释;
- 附带 ca-bundle 下载地址 。具体做法是在 sensors_analytics_sdk.cpp 文件中搜索 CURLOPT_CAINFO,取消该行注释,并指定证书文件的路径。