TalkingDataSDK.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. //
  2. // TalkingDataSDK.h
  3. // TalkingData
  4. //
  5. // Created by liweiqiang on 21-03-16.
  6. // Copyright (c) 2021年 TendCloud. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. typedef NS_OPTIONS(NSUInteger, TalkingDataDisable) {
  10. TalkingDataDisablePreciseArea = 1 << 0,
  11. TalkingDataDisableAnalyticsIntellignet = 1 << 1,
  12. TalkingDataDisableDeviceIdentification = 1 << 2,
  13. TalkingDataDisableAntiCheating = 1 << 3,
  14. };
  15. typedef NS_ENUM(NSUInteger, TalkingDataVendorIdType) {
  16. TalkingDataVendorIdTypeZX = 1, // 卓信
  17. TalkingDataVendorIdTypeGX = 2, // 广协
  18. };
  19. typedef NS_ENUM(NSInteger, TalkingDataSharingFilter) {
  20. TalkingDataSharingFilterShare = 0, // 可共享
  21. TalkingDataSharingFilterOnlyInstall = 1, // 仅共享Install事件
  22. TalkingDataSharingFilterUnshare = 2, // 不可共享
  23. };
  24. typedef NS_ENUM(NSUInteger, TalkingDataProfileType) {
  25. TalkingDataProfileTypeAnonymous = 0, // 匿名账户
  26. TalkingDataProfileTypeRegistered = 1, // 显性注册账户
  27. TalkingDataProfileTypeSinaWeibo = 2, // 新浪微博
  28. TalkingDataProfileTypeQQ = 3, // QQ账户
  29. TalkingDataProfileTypeQQWeibo = 4, // 腾讯微博
  30. TalkingDataProfileTypeND91 = 5, // 91账户
  31. TalkingDataProfileTypeWeiXin = 6, // 微信
  32. TalkingDataProfileTypeType1 = 11, // 自定义类型1
  33. TalkingDataProfileTypeType2 = 12, // 自定义类型2
  34. TalkingDataProfileTypeType3 = 13, // 自定义类型3
  35. TalkingDataProfileTypeType4 = 14, // 自定义类型4
  36. TalkingDataProfileTypeType5 = 15, // 自定义类型5
  37. TalkingDataProfileTypeType6 = 16, // 自定义类型6
  38. TalkingDataProfileTypeType7 = 17, // 自定义类型7
  39. TalkingDataProfileTypeType8 = 18, // 自定义类型8
  40. TalkingDataProfileTypeType9 = 19, // 自定义类型9
  41. TalkingDataProfileTypeType10 = 20, // 自定义类型10
  42. };
  43. typedef NS_ENUM(NSUInteger, TalkingDataGender) {
  44. TalkingDataGenderUnknown = 0, // 未知
  45. TalkingDataGenderMale = 1, // 男
  46. TalkingDataGenderFemale = 2, // 女
  47. };
  48. @interface TalkingDataProfile : NSObject
  49. + (TalkingDataProfile *)createProfile;
  50. // 账户名称
  51. @property (nonatomic, strong) NSString *name;
  52. // 账户类型
  53. @property (nonatomic, assign) TalkingDataProfileType type;
  54. // 用户性别
  55. @property (nonatomic, assign) TalkingDataGender gender;
  56. // 用户年龄
  57. @property (nonatomic, assign) int age;
  58. // 自定义属性1-10,类型为NSString或NSNumber
  59. @property (nonatomic, strong) id property1;
  60. @property (nonatomic, strong) id property2;
  61. @property (nonatomic, strong) id property3;
  62. @property (nonatomic, strong) id property4;
  63. @property (nonatomic, strong) id property5;
  64. @property (nonatomic, strong) id property6;
  65. @property (nonatomic, strong) id property7;
  66. @property (nonatomic, strong) id property8;
  67. @property (nonatomic, strong) id property9;
  68. @property (nonatomic, strong) id property10;
  69. @end
  70. @interface TalkingDataSearch : NSObject
  71. + (TalkingDataSearch *)createSearch;
  72. // 搜索类别
  73. @property (nonatomic, strong) NSString *category;
  74. // 搜索内容
  75. @property (nonatomic, strong) NSString *content;
  76. @end
  77. @interface TalkingDataSDK : NSObject
  78. /**
  79. * 获取TalkingData分配的设备ID
  80. * @return deviceId 设备的ID
  81. */
  82. + (NSString *)getDeviceId;
  83. /**
  84. * 设置不显示日志。如发布时不需显示日志,应当最先调用该接口。
  85. */
  86. + (void)setVerboseLogDisable;
  87. /**
  88. * 设置关闭配置
  89. */
  90. + (void)setConfigurationDisable:(TalkingDataDisable)options;
  91. /**
  92. * 开启后台使用时长统计,需在SDK初始化之前调用。
  93. */
  94. + (void)backgroundSessionEnabled;
  95. #if TARGET_OS_IOS
  96. /**
  97. * 用于精准的追踪以Safari作为资源载体的广告来源,如果需要使用应当在init接口之前调用。
  98. */
  99. + (void)enableSFSafariViewControllerTracking API_DEPRECATED("此接口会影响到用户交互,使用前请确保和产品、业务沟通清楚!", ios(1, 1));
  100. #endif
  101. /**
  102. * 此接口已废弃,请调用'initSDK'和'startA'接口,详细说明请见官网集成文档。
  103. */
  104. + (void)init:(NSString *)appId channelId:(NSString *)channelId custom:(NSString *)custom NS_UNAVAILABLE;
  105. /**
  106. * SDK初始化接口,仅会执行SDK初始化,不会进行任何信息采集。
  107. * 请在application:didFinishLaunchingWithOptions:中调用
  108. * @param appId 应用的唯一标识,统计后台注册得到
  109. * @param channelId 渠道名(可选)。如“AppStore”
  110. * @param custom 自定义参数(可选)。
  111. */
  112. + (void)initSDK:(NSString *)appId channelId:(NSString *)channelId custom:(NSString *)custom;
  113. /**
  114. * SDK启动分析,基础数据准备。
  115. */
  116. + (void)startA;
  117. /**
  118. * 设置第三方的ID
  119. * @param vendorId 第三方的ID
  120. * @param type ID的提供方
  121. */
  122. + (void)setVendorId:(NSString *)vendorId ofType:(TalkingDataVendorIdType)type;
  123. /**
  124. * 设置位置信息
  125. * @param latitude 纬度
  126. * @param longitude 经度
  127. */
  128. + (void)setLatitude:(double)latitude longitude:(double)longitude;
  129. /**
  130. * 设置自定义数据是否可共享
  131. * @param flag 是否可共享
  132. */
  133. + (void)setCustomDataSwitch:(TalkingDataSharingFilter)flag;
  134. #if TARGET_OS_IOS
  135. /**
  136. * 是否捕捉程序崩溃记录
  137. * 如果需要记录程序崩溃日志,请将值设成YES,并且在初始化后尽早调用
  138. * @param enable 默认NO
  139. */
  140. + (void)setExceptionReportEnabled:(BOOL)enable;
  141. /**
  142. * 是否捕捉异常信号
  143. * 如果需要开启异常信号捕捉功能,请将值设成YES,并且在初始化后尽早调用
  144. * @param enable 默认NO
  145. */
  146. + (void)setSignalReportEnabled:(BOOL)enable;
  147. #endif
  148. /**
  149. * 开始跟踪某一页面,记录页面打开时间
  150. * 建议在viewWillAppear或者viewDidAppear中调用
  151. * @param pageName 页面名称
  152. */
  153. + (void)onPageBegin:(NSString *)pageName;
  154. /**
  155. * 结束某一页面的跟踪,记录页面的关闭时间
  156. * 此接口与onPageBegin接口结对使用
  157. * 建议在viewWillDisappear或者viewDidDisappear中调用
  158. * @param pageName 页面名称,请跟onPageBegin接口的页面名称保持一致
  159. */
  160. + (void)onPageEnd:(NSString *)pageName;
  161. /**
  162. * 获取短链
  163. * @param params 生成短链所参数
  164. * @param callback 返回结果
  165. */
  166. + (void)getShortUrl:(NSDictionary *)params callback:(void (^)(NSString *shortUrl))callback;
  167. #if TARGET_OS_IOS
  168. /**
  169. * 获取延时链接
  170. */
  171. + (NSString *)getDeferredLink;
  172. #endif
  173. /**
  174. * 处理UniversalLink
  175. * @param userActivity 获取到的NSUserActivity对象
  176. * @return deeplink 深度链接
  177. */
  178. + (NSString *)handleUniversalLink:(NSUserActivity *)userActivity;
  179. /**
  180. * 唤醒事件
  181. * @param link 唤醒链接
  182. */
  183. + (void)onReceiveDeepLink:(NSURL *)link;
  184. /**
  185. * 注册
  186. * @param profileId 账户ID
  187. * @param profile 账户属性
  188. * @param invitationCode 邀请码
  189. * @param eventValue 用户自定义事件参数
  190. */
  191. + (void)onRegister:(NSString *)profileId profile:(TalkingDataProfile *)profile invitationCode:(NSString *)invitationCode eventValue:(NSDictionary *)eventValue;
  192. + (void)onRegister:(NSString *)profileId profile:(TalkingDataProfile *)profile invitationCode:(NSString *)invitationCode;
  193. /**
  194. * 登录
  195. * @param profileId 账户ID
  196. * @param profile 账户属性
  197. * @param eventValue 用户自定义事件参数
  198. */
  199. + (void)onLogin:(NSString *)profileId profile:(TalkingDataProfile *)profile eventValue:(NSDictionary *)eventValue;
  200. + (void)onLogin:(NSString *)profileId profile:(TalkingDataProfile *)profile;
  201. /**
  202. * 更新账户信息
  203. * @param profile 账户属性
  204. */
  205. + (void)onProfileUpdate:(TalkingDataProfile *)profile;
  206. /**
  207. * 添加支付信息
  208. * @param profileId 账户ID
  209. * @param method 支付方式
  210. * @param content 支付信息
  211. */
  212. + (void)onCreateCard:(NSString *)profileId method:(NSString *)method content:(NSString *)content;
  213. /**
  214. * 收藏
  215. * @param category 收藏类别
  216. * @param content 收藏内容
  217. * @param eventValue 用户自定义事件参数
  218. */
  219. + (void)onFavorite:(NSString *)category content:(NSString *)content eventValue:(NSDictionary *)eventValue;
  220. + (void)onFavorite:(NSString *)category content:(NSString *)content;
  221. /**
  222. * 分享
  223. * @param profileId 账户ID
  224. * @param content 分享内容
  225. * @param eventValue 用户自定义事件参数
  226. */
  227. + (void)onShare:(NSString *)profileId content:(NSString *)content eventValue:(NSDictionary *)eventValue;
  228. + (void)onShare:(NSString *)profileId content:(NSString *)content;
  229. /**
  230. * 签到打卡
  231. * @param profileId 账户ID
  232. * @param punchId 签到打卡ID
  233. */
  234. + (void)onPunch:(NSString *)profileId punchId:(NSString *)punchId;
  235. /**
  236. * 搜索事件
  237. * @param search 搜索信息详情
  238. */
  239. + (void)onSearch:(TalkingDataSearch *)search;
  240. /**
  241. * 付费
  242. * @param profileId 账户ID
  243. * @param orderId 订单ID
  244. * @param amount 订单金额
  245. * @param currencyType 货币类型
  246. * @param paymentType 支付类型
  247. * @param itemId 商品ID
  248. * @param itemCount 商品个数
  249. */
  250. + (void)onPay:(NSString *)profileId orderId:(NSString *)orderId amount:(int)amount currencyType:(NSString *)currencyType paymentType:(NSString *)paymentType itemId:(NSString *)itemId itemCount:(int)itemCount;
  251. /**
  252. * 创建角色
  253. * @param name 角色名称
  254. */
  255. + (void)onCreateRole:(NSString *)name;
  256. /**
  257. * 通过关卡
  258. * @param profileId 账户ID
  259. * @param levelId 关卡ID
  260. */
  261. + (void)onLevelPass:(NSString *)profileId levelId:(NSString *)levelId;
  262. /**
  263. * 完成新手教程
  264. * @param profileId 账户ID
  265. * @param content 教程信息
  266. */
  267. + (void)onGuideFinished:(NSString *)profileId content:(NSString *)content;
  268. /**
  269. * 解锁成就
  270. * @param profileId 账户ID
  271. * @param achievementId 成就ID
  272. */
  273. + (void)onAchievementUnlock:(NSString *)profileId achievementId:(NSString *)achievementId;
  274. /**
  275. * 自定义事件
  276. * @param eventId 事件名称
  277. * @param parameters 事件参数 (key只支持NSString, value支持NSString和NSNumber)
  278. * @param eventValue 用户自定义事件参数
  279. */
  280. + (void)onEvent:(NSString *)eventId parameters:(NSDictionary *)parameters eventValue:(NSDictionary *)eventValue;
  281. + (void)onEvent:(NSString *)eventId parameters:(NSDictionary *)parameters;
  282. + (void)onEvent:(NSString *)eventId value:(double)eventValue parameters:(NSDictionary *)parameters API_DEPRECATED_WITH_REPLACEMENT("onEvent:parameters", ios(1,1));
  283. /**
  284. * 添加自定义事件全局参数
  285. * @param key 参数的key
  286. * @param value 参数的value,NSString或NSNumber类型
  287. */
  288. + (void)setGlobalKV:(NSString *)key value:(id)value;
  289. /**
  290. * 删除自定义事件全局参数
  291. * @param key 参数的key
  292. */
  293. + (void)removeGlobalKV:(NSString *)key;
  294. @end