|
| 1 | +package com.sensorsdata.analytics.javasdk; |
| 2 | + |
| 3 | +import com.sensorsdata.analytics.javasdk.bean.EventRecord; |
| 4 | +import com.sensorsdata.analytics.javasdk.bean.ItemRecord; |
| 5 | +import com.sensorsdata.analytics.javasdk.bean.SuperPropertiesRecord; |
| 6 | +import com.sensorsdata.analytics.javasdk.bean.UserRecord; |
| 7 | +import com.sensorsdata.analytics.javasdk.exceptions.InvalidArgumentException; |
| 8 | + |
| 9 | +import java.util.Map; |
| 10 | + |
| 11 | +/** |
| 12 | + * 外部可调用的接口方法 |
| 13 | + * |
| 14 | + * @author fz |
| 15 | + * @version 1.0.0 |
| 16 | + * @since 2021/05/25 11:58 |
| 17 | + */ |
| 18 | +public interface ISensorsAnalytics { |
| 19 | + |
| 20 | + /** |
| 21 | + * 开启导入历史数据模式 |
| 22 | + * |
| 23 | + * @param enableTimeFree true:表示开启;false:表示关闭;默认关闭 |
| 24 | + */ |
| 25 | + void setEnableTimeFree(boolean enableTimeFree); |
| 26 | + |
| 27 | + /** |
| 28 | + * 设置公共属性 |
| 29 | + * |
| 30 | + * @param propertiesRecord 公共属性实体 |
| 31 | + */ |
| 32 | + void registerSuperProperties(SuperPropertiesRecord propertiesRecord); |
| 33 | + |
| 34 | + /** |
| 35 | + * 设置每个事件都带有的一些公共属性 |
| 36 | + * <p> |
| 37 | + * 当track的Properties,superProperties和SDK自动生成的automaticProperties有相同的key时,遵循如下的优先级: |
| 38 | + * track.properties 高于 superProperties 高于 automaticProperties |
| 39 | + * <p> |
| 40 | + * 另外,当这个接口被多次调用时,是用新传入的数据去merge先前的数据 |
| 41 | + * <p> |
| 42 | + * 例如,在调用接口前,dict是 {"a":1, "b": "bbb"},传入的dict是 {"b": 123, "c": "asd"},则merge后 |
| 43 | + * 的结果是 {"a":1, "b": 123, "c": "asd"} |
| 44 | + * |
| 45 | + * @param superPropertiesMap 一个或多个公共属性 |
| 46 | + */ |
| 47 | + void registerSuperProperties(Map<String, Object> superPropertiesMap); |
| 48 | + |
| 49 | + /** |
| 50 | + * 清除公共属性 |
| 51 | + */ |
| 52 | + void clearSuperProperties(); |
| 53 | + |
| 54 | + /** |
| 55 | + * 记录事件 |
| 56 | + * |
| 57 | + * @param eventRecord 事件消息对象 |
| 58 | + * 通过 {@link EventRecord.Builder} 来构造; |
| 59 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 60 | + */ |
| 61 | + void track(EventRecord eventRecord) throws InvalidArgumentException; |
| 62 | + |
| 63 | + /** |
| 64 | + * 记录一个没有任何属性的事件 |
| 65 | + * |
| 66 | + * @param distinctId 用户 ID |
| 67 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 68 | + * @param eventName 事件名称 |
| 69 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 70 | + */ |
| 71 | + void track(String distinctId, boolean isLoginId, String eventName) throws InvalidArgumentException; |
| 72 | + |
| 73 | + /** |
| 74 | + * 记录一个拥有一个或多个属性的事件。属性取值可接受类型为{@link Number}, {@link String}, {@link java.util.Date}和 |
| 75 | + * {@link java.util.List}; |
| 76 | + * 若属性包含 $time 字段,则它会覆盖事件的默认时间属性,该字段只接受{@link java.util.Date}类型; |
| 77 | + * 若属性包含 $project 字段,则它会指定事件导入的项目; |
| 78 | + * |
| 79 | + * @param distinctId 用户 ID |
| 80 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 81 | + * @param eventName 事件名称 |
| 82 | + * @param properties 事件的属性 |
| 83 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 84 | + */ |
| 85 | + void track(String distinctId, boolean isLoginId, String eventName, Map<String, Object> properties) |
| 86 | + throws InvalidArgumentException; |
| 87 | + |
| 88 | + /** |
| 89 | + * 记录用户注册事件 |
| 90 | + * <p> |
| 91 | + * 这个接口是一个较为复杂的功能,请在使用前先阅读相关说明: |
| 92 | + * http://www.sensorsdata.cn/manual/track_signup.html |
| 93 | + * 并在必要时联系我们的技术支持人员。 |
| 94 | + * |
| 95 | + * @param loginId 登录 ID |
| 96 | + * @param anonymousId 匿名 ID |
| 97 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 98 | + */ |
| 99 | + void trackSignUp(String loginId, String anonymousId) throws InvalidArgumentException; |
| 100 | + |
| 101 | + /** |
| 102 | + * 记录用户注册事件 |
| 103 | + * <p> |
| 104 | + * 这个接口是一个较为复杂的功能,请在使用前先阅读相关说明: |
| 105 | + * http://www.sensorsdata.cn/manual/track_signup.html |
| 106 | + * 并在必要时联系我们的技术支持人员。 |
| 107 | + * <p> |
| 108 | + * 属性取值可接受类型为{@link Number}, {@link String}, {@link java.util.Date}和{@link java.util.List}; |
| 109 | + * 若属性包含 $time 字段,它会覆盖事件的默认时间属性,该字段只接受{@link java.util.Date}类型; |
| 110 | + * 若属性包含 $project 字段,则它会指定事件导入的项目; |
| 111 | + * |
| 112 | + * @param loginId 登录 ID |
| 113 | + * @param anonymousId 匿名 ID |
| 114 | + * @param properties 事件的属性 |
| 115 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 116 | + */ |
| 117 | + void trackSignUp(String loginId, String anonymousId, Map<String, Object> properties) |
| 118 | + throws InvalidArgumentException; |
| 119 | + |
| 120 | + /** |
| 121 | + * 设置用户的属性。属性取值可接受类型为{@link Number}, {@link String}, {@link java.util.Date}和{@link java.util.List}; |
| 122 | + * <p> |
| 123 | + * 如果要设置的properties的key,之前在这个用户的profile中已经存在,则覆盖,否则,新创建 |
| 124 | + * |
| 125 | + * @param userRecord 用户属性实体 |
| 126 | + * @throws InvalidArgumentException 用户属性类型或者用户ID不合法则抛出该异常 |
| 127 | + */ |
| 128 | + void profileSet(UserRecord userRecord) throws InvalidArgumentException; |
| 129 | + |
| 130 | + /** |
| 131 | + * 设置用户的属性。属性取值可接受类型为{@link Number}, {@link String}, {@link java.util.Date}和{@link java.util.List}; |
| 132 | + * <p> |
| 133 | + * 如果要设置的properties的key,之前在这个用户的profile中已经存在,则覆盖,否则,新创建 |
| 134 | + * |
| 135 | + * @param distinctId 用户 ID |
| 136 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 137 | + * @param properties 用户的属性 |
| 138 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 139 | + */ |
| 140 | + void profileSet(String distinctId, boolean isLoginId, Map<String, Object> properties) |
| 141 | + throws InvalidArgumentException; |
| 142 | + |
| 143 | + /** |
| 144 | + * 设置用户的属性。这个接口只能设置单个key对应的内容,同样,如果已经存在,则覆盖,否则,新创建 |
| 145 | + * |
| 146 | + * @param distinctId 用户 ID |
| 147 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 148 | + * @param property 属性名称 |
| 149 | + * @param value 属性的值 |
| 150 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 151 | + */ |
| 152 | + void profileSet(String distinctId, boolean isLoginId, String property, Object value) |
| 153 | + throws InvalidArgumentException; |
| 154 | + |
| 155 | + /** |
| 156 | + * 首次设置用户的属性。 |
| 157 | + * 属性取值可接受类型为{@link Number}, {@link String}, {@link java.util.Date}和{@link java.util.List}; |
| 158 | + * <p> |
| 159 | + * 与profileSet接口不同的是: |
| 160 | + * 如果要设置的properties的key,在这个用户的profile中已经存在,则不处理,否则,新创建 |
| 161 | + * |
| 162 | + * @param userRecord 用户属性实体 |
| 163 | + * @throws InvalidArgumentException 用户属性类型或者用户ID不合法则抛出该异常 |
| 164 | + */ |
| 165 | + void profileSetOnce(UserRecord userRecord) throws InvalidArgumentException; |
| 166 | + |
| 167 | + /** |
| 168 | + * 首次设置用户的属性。 |
| 169 | + * 属性取值可接受类型为{@link Number}, {@link String}, {@link java.util.Date}和{@link java.util.List}; |
| 170 | + * <p> |
| 171 | + * 与profileSet接口不同的是: |
| 172 | + * 如果要设置的properties的key,在这个用户的profile中已经存在,则不处理,否则,新创建 |
| 173 | + * |
| 174 | + * @param distinctId 用户 ID |
| 175 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 176 | + * @param properties 用户的属性 |
| 177 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 178 | + */ |
| 179 | + void profileSetOnce(String distinctId, boolean isLoginId, Map<String, Object> properties) |
| 180 | + throws InvalidArgumentException; |
| 181 | + |
| 182 | + /** |
| 183 | + * 首次设置用户的属性。这个接口只能设置单个key对应的内容。 |
| 184 | + * 与profileSet接口不同的是,如果key的内容之前已经存在,则不处理,否则,重新创建 |
| 185 | + * |
| 186 | + * @param distinctId 用户 ID |
| 187 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 188 | + * @param property 属性名称 |
| 189 | + * @param value 属性的值 |
| 190 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 191 | + */ |
| 192 | + void profileSetOnce(String distinctId, boolean isLoginId, String property, Object value) |
| 193 | + throws InvalidArgumentException; |
| 194 | + |
| 195 | + /** |
| 196 | + * 为用户的数值类型的属性累加一个数值,若该属性不存在,则创建它并设置默认值为0 |
| 197 | + * |
| 198 | + * @param userRecord 用户属性实体 |
| 199 | + * @throws InvalidArgumentException 用户属性类型或者用户ID不合法则抛出该异常 |
| 200 | + */ |
| 201 | + void profileIncrement(UserRecord userRecord) throws InvalidArgumentException; |
| 202 | + |
| 203 | + /** |
| 204 | + * 为用户的一个或多个数值类型的属性累加一个数值,若该属性不存在,则创建它并设置默认值为0。属性取值只接受 |
| 205 | + * {@link Number}类型 |
| 206 | + * |
| 207 | + * @param distinctId 用户 ID |
| 208 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 209 | + * @param properties 用户的属性 |
| 210 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 211 | + */ |
| 212 | + void profileIncrement(String distinctId, boolean isLoginId, Map<String, Object> properties) |
| 213 | + throws InvalidArgumentException; |
| 214 | + |
| 215 | + /** |
| 216 | + * 为用户的数值类型的属性累加一个数值,若该属性不存在,则创建它并设置默认值为0 |
| 217 | + * |
| 218 | + * @param distinctId 用户 ID |
| 219 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 220 | + * @param property 属性名称 |
| 221 | + * @param value 属性的值 |
| 222 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 223 | + */ |
| 224 | + void profileIncrement(String distinctId, boolean isLoginId, String property, long value) |
| 225 | + throws InvalidArgumentException; |
| 226 | + |
| 227 | + /** |
| 228 | + * 为用户的一个或多个数组类型的属性追加字符串,属性取值类型必须为 {@link java.util.List},且列表中元素的类型 |
| 229 | + * 必须为 {@link String} |
| 230 | + * |
| 231 | + * @param userRecord 用户属性实体 |
| 232 | + * @throws InvalidArgumentException 用户属性类型或者用户ID不合法则抛出该异常 |
| 233 | + */ |
| 234 | + void profileAppend(UserRecord userRecord) throws InvalidArgumentException; |
| 235 | + |
| 236 | + /** |
| 237 | + * 为用户的一个或多个数组类型的属性追加字符串,属性取值类型必须为 {@link java.util.List},且列表中元素的类型 |
| 238 | + * 必须为 {@link String} |
| 239 | + * |
| 240 | + * @param distinctId 用户 ID |
| 241 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 242 | + * @param properties 用户的属性 |
| 243 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 244 | + */ |
| 245 | + void profileAppend(String distinctId, boolean isLoginId, Map<String, Object> properties) |
| 246 | + throws InvalidArgumentException; |
| 247 | + |
| 248 | + /** |
| 249 | + * 为用户的数组类型的属性追加一个字符串 |
| 250 | + * |
| 251 | + * @param distinctId 用户 ID |
| 252 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 253 | + * @param property 属性名称 |
| 254 | + * @param value 属性的值 |
| 255 | + * @throws InvalidArgumentException eventName 或 properties 不符合命名规范和类型规范时抛出该异常 |
| 256 | + */ |
| 257 | + void profileAppend(String distinctId, boolean isLoginId, String property, String value) |
| 258 | + throws InvalidArgumentException; |
| 259 | + |
| 260 | + /** |
| 261 | + * 删除用户已存在的一条或者多条属性 |
| 262 | + * |
| 263 | + * @param userRecord 用户属性实体 |
| 264 | + * @throws InvalidArgumentException 用户属性类型或者用户ID不合法则抛出该异常 |
| 265 | + */ |
| 266 | + void profileUnset(UserRecord userRecord) throws InvalidArgumentException; |
| 267 | + |
| 268 | + /** |
| 269 | + * 删除用户某一个属性 |
| 270 | + * |
| 271 | + * @param distinctId 用户 ID |
| 272 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 273 | + * @param property 属性名称 |
| 274 | + * @throws InvalidArgumentException 用户属性类型或者用户ID不合法则抛出该异常 |
| 275 | + */ |
| 276 | + void profileUnset(String distinctId, boolean isLoginId, String property) throws InvalidArgumentException; |
| 277 | + |
| 278 | + /** |
| 279 | + * 删除用户属性 |
| 280 | + * |
| 281 | + * @param distinctId 用户 ID |
| 282 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 283 | + * @param properties 用户属性名称列表,要删除的属性值请设置为 Boolean 类型的 true,如果要删除指定项目的用户属性,需正确传 $project 字段 |
| 284 | + * @throws InvalidArgumentException 用户属性类型或者用户ID不合法则抛出该异常 |
| 285 | + */ |
| 286 | + void profileUnset(String distinctId, boolean isLoginId, Map<String, Object> properties) |
| 287 | + throws InvalidArgumentException; |
| 288 | + |
| 289 | + /** |
| 290 | + * 删除用户所有属性 |
| 291 | + * |
| 292 | + * @param userRecord 用户属性实体 |
| 293 | + * @throws InvalidArgumentException 用户属性类型或者用户ID不合法则抛出该异常 |
| 294 | + */ |
| 295 | + void profileDelete(UserRecord userRecord) throws InvalidArgumentException; |
| 296 | + |
| 297 | + /** |
| 298 | + * 删除用户所有属性 |
| 299 | + * |
| 300 | + * @param distinctId 用户 ID |
| 301 | + * @param isLoginId 用户 ID 是否是登录 ID,false 表示该 ID 是一个匿名 ID |
| 302 | + * @throws InvalidArgumentException distinctId 不符合命名规范时抛出该异常 |
| 303 | + */ |
| 304 | + void profileDelete(String distinctId, boolean isLoginId) throws InvalidArgumentException; |
| 305 | + |
| 306 | + /** |
| 307 | + * 增加item 记录 |
| 308 | + * |
| 309 | + * @param itemRecord 维度表属性实体 |
| 310 | + * @throws InvalidArgumentException itemId或itemType字段不合法则抛出该异常 |
| 311 | + */ |
| 312 | + void itemSet(ItemRecord itemRecord) throws InvalidArgumentException; |
| 313 | + |
| 314 | + /** |
| 315 | + * 设置 item |
| 316 | + * |
| 317 | + * @param itemType item 类型 |
| 318 | + * @param itemId item ID |
| 319 | + * @param properties item 相关属性 |
| 320 | + * @throws InvalidArgumentException 取值不符合规范抛出该异常 |
| 321 | + */ |
| 322 | + void itemSet(String itemType, String itemId, Map<String, Object> properties) throws InvalidArgumentException; |
| 323 | + |
| 324 | + /** |
| 325 | + * 删除维度表记录 |
| 326 | + * |
| 327 | + * @param itemRecord 维度表属性实体 |
| 328 | + * @throws InvalidArgumentException itemId或itemType字段不合法则抛出该异常 |
| 329 | + */ |
| 330 | + void itemDelete(ItemRecord itemRecord) throws InvalidArgumentException; |
| 331 | + |
| 332 | + /** |
| 333 | + * 删除 item |
| 334 | + * |
| 335 | + * @param itemType item 类型 |
| 336 | + * @param itemId item ID |
| 337 | + * @param properties item 相关属性 |
| 338 | + * @throws InvalidArgumentException 取值不符合规范抛出该异常 |
| 339 | + */ |
| 340 | + void itemDelete(String itemType, String itemId, Map<String, Object> properties) throws InvalidArgumentException; |
| 341 | + |
| 342 | + /** |
| 343 | + * 立即发送缓存中的所有日志 |
| 344 | + */ |
| 345 | + void flush(); |
| 346 | + |
| 347 | + /** |
| 348 | + * 停止SensorsDataAPI所有线程,API停止前会清空所有本地数据 |
| 349 | + */ |
| 350 | + void shutdown(); |
| 351 | +} |
0 commit comments