TalkingData.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. //
  2. // TalkingData.h
  3. // __MyProjectName__
  4. //
  5. // Created by Biao Hou on 11-11-14.
  6. // Copyright (c) 2011年 __MyCompanyName__. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #if TARGET_OS_IOS
  10. #import <WebKit/WebKit.h>
  11. #endif
  12. #if TARGET_OS_IOS
  13. typedef NS_ENUM(NSUInteger, TDProfileType) {
  14. TDProfileTypeAnonymous = 0, // 匿名账户
  15. TDProfileTypeRegistered = 1, // 显性注册账户
  16. TDProfileTypeSinaWeibo = 2, // 新浪微博
  17. TDProfileTypeQQ = 3, // QQ账户
  18. TDProfileTypeTencentWeibo = 4, // 腾讯微博
  19. TDProfileTypeND91 = 5, // 91账户
  20. TDProfileTypeWeiXin = 6, // 微信
  21. TDProfileTypeType1 = 11, // 自定义类型1
  22. TDProfileTypeType2 = 12, // 自定义类型2
  23. TDProfileTypeType3 = 13, // 自定义类型3
  24. TDProfileTypeType4 = 14, // 自定义类型4
  25. TDProfileTypeType5 = 15, // 自定义类型5
  26. TDProfileTypeType6 = 16, // 自定义类型6
  27. TDProfileTypeType7 = 17, // 自定义类型7
  28. TDProfileTypeType8 = 18, // 自定义类型8
  29. TDProfileTypeType9 = 19, // 自定义类型9
  30. TDProfileTypeType10 = 20 // 自定义类型10
  31. };
  32. #endif
  33. #if TARGET_OS_IOS
  34. @interface TalkingDataOrder : NSObject
  35. /**
  36. * @method createOrder
  37. * @param orderId 订单id 类型:NSString
  38. * @param total 订单总价 类型:int
  39. * @param currencyType 币种 类型:NSString
  40. */
  41. + (TalkingDataOrder *)createOrder:(NSString *)orderId total:(int)total currencyType:(NSString *)currencyType;
  42. /**
  43. * @method addItemWithCategory
  44. * @param itemId 商品Id 类型:NSString
  45. * @param category 商品类别 类型:NSString
  46. * @param name 商品名称 类型:NSString
  47. * @param unitPrice 商品单价 类型:int
  48. * @param amount 商品数量 类型:int
  49. */
  50. - (TalkingDataOrder *)addItem:(NSString *)itemId category:(NSString *)category name:(NSString *)name unitPrice:(int)unitPrice amount:(int)amount;
  51. @end
  52. @interface TalkingDataShoppingCart : NSObject
  53. /**
  54. * @method createShoppingCart
  55. */
  56. + (TalkingDataShoppingCart *)createShoppingCart;
  57. /**
  58. * @method addItem
  59. * @param itemId 商品Id 类型:NSString
  60. * @param category 商品类别 类型:NSString
  61. * @param name 商品名称 类型:NSString
  62. * @param unitPrice 商品单价 类型:int
  63. * @param amount 商品数量 类型:int
  64. */
  65. - (TalkingDataShoppingCart *)addItem:(NSString *)itemId category:(NSString *)category name:(NSString *)name unitPrice:(int)unitPrice amount:(int)amount;
  66. @end
  67. #endif
  68. typedef NS_ENUM(NSUInteger, TDVendorIdType) {
  69. TDVendorIdTypeZX = 1, // 卓信
  70. TDVendorIdTypeGX = 2, // 广协
  71. };
  72. @interface TalkingData: NSObject
  73. /**
  74. * @method getDeviceID
  75. * 获取SDK所使用的DeviceID
  76. * @return DeviceID
  77. */
  78. + (NSString *)getDeviceID;
  79. + (void)setVendorID:(NSString *)vendorID ofType:(TDVendorIdType)type;
  80. /**
  81. * @method setLogEnabled
  82. * 统计日志开关(可选)
  83. * @param enable 默认是开启状态
  84. */
  85. + (void)setLogEnabled:(BOOL)enable;
  86. #if TARGET_OS_IOS
  87. /**
  88. * @method setExceptionReportEnabled
  89. * 是否捕捉程序崩溃记录(可选)
  90. * 如果需要记录程序崩溃日志,请将值设成YES,并且在初始化后尽早调用
  91. * @param enable 默认是 NO
  92. */
  93. + (void)setExceptionReportEnabled:(BOOL)enable;
  94. /**
  95. * @method setSignalReportEnabled
  96. * 是否捕捉异常信号(可选)
  97. * 如果需要开启异常信号捕捉功能,请将值设成YES,并且在初始化后尽早调用
  98. * @param enable 默认是NO
  99. */
  100. + (void)setSignalReportEnabled:(BOOL)enable;
  101. #endif
  102. #if TARGET_OS_IOS
  103. /**
  104. * @method setLatitude:longitude:
  105. * 设置位置信息(可选)
  106. * @param latitude 维度
  107. * @param longitude 经度
  108. */
  109. + (void)setLatitude:(double)latitude longitude:(double)longitude;
  110. #endif
  111. /**
  112. * @method backgroundSessionEnabled
  113. * 开启后台使用时长统计,需在SDK初始化之前调用。
  114. */
  115. + (void)backgroundSessionEnabled;
  116. #if TARGET_OS_IOS
  117. /**
  118. * @method sessionStarted:withChannelId:
  119. * 初始化统计实例,请在application:didFinishLaunchingWithOptions:方法里调用
  120. * @param appKey 应用的唯一标识,统计后台注册得到
  121. * @param channelId 渠道名,如“app store”(可选)
  122. */
  123. + (void)sessionStarted:(NSString *)appKey withChannelId:(NSString *)channelId;
  124. #endif
  125. /**
  126. * @method setProfileId:
  127. * 设置帐户ID
  128. * @param profileId 账户ID
  129. */
  130. + (void)setProfileId:(NSString *)profileId API_DEPRECATED("", ios(1, 1));
  131. #if TARGET_OS_IOS
  132. /**
  133. * @method onRegister 注册
  134. * @param profileId 账户ID
  135. * @param type 账户类型
  136. * @param name 账户昵称
  137. */
  138. + (void)onRegister:(NSString *)profileId type:(TDProfileType)type name:(NSString *)name;
  139. /**
  140. * @method onLogin 登录
  141. * @param profileId 账户ID
  142. * @param type 账户类型
  143. * @param name 账户昵称
  144. */
  145. + (void)onLogin:(NSString *)profileId type:(TDProfileType)type name:(NSString *)name;
  146. #endif
  147. /**
  148. * @method trackEvent
  149. * 统计自定义事件(可选),如购买动作
  150. * @param eventId 事件名称(自定义)
  151. */
  152. + (void)trackEvent:(NSString *)eventId;
  153. /**
  154. * @method trackEvent:label:
  155. * 统计带标签的自定义事件(可选),可用标签来区别同一个事件的不同应用场景
  156. 如购买某一特定的商品
  157. * @param eventId 事件名称(自定义)
  158. * @param eventLabel 事件标签(自定义)
  159. */
  160. + (void)trackEvent:(NSString *)eventId label:(NSString *)eventLabel;
  161. /**
  162. * @method trackEvent:label:parameters
  163. * 统计带二级参数的自定义事件,单次调用的参数数量不能超过10个
  164. * @param eventId 事件名称(自定义)
  165. * @param eventLabel 事件标签(自定义)
  166. * @param parameters 事件参数 (key只支持NSString, value支持NSString和NSNumber)
  167. */
  168. + (void)trackEvent:(NSString *)eventId
  169. label:(NSString *)eventLabel
  170. parameters:(NSDictionary *)parameters;
  171. /**
  172. * @method trackEvent:label:parameters:value:
  173. * 数值事件
  174. * @param eventId 事件名称(自定义)
  175. * @param eventLabel 事件标签(自定义)
  176. * @param parameters 事件参数 (key只支持NSString, value支持NSString和NSNumber)
  177. * @param eventValue 事件数值(double)
  178. */
  179. + (void)trackEvent:(NSString *)eventId
  180. label:(NSString *)eventLabel
  181. parameters:(NSDictionary *)parameters
  182. value:(double)eventValue;
  183. /**
  184. * @method setGlobalKV:value:
  185. * 添加全局的字段,这里的内容会每次的自定义事都会带着,发到服务器。也就是说如果您的自定义事件中每一条都需要带同样的内容,如用户名称等,就可以添加进去
  186. * @param key 自定义事件的key,如果在之后,创建自定义的时候,有相同的key,则会覆盖,全局的里相同key的内容
  187. * @param value 这里是NSObject类型,或者是NSString 或者NSNumber类型
  188. */
  189. + (void)setGlobalKV:(NSString *)key value:(id)value;
  190. /**
  191. * @method removeGlobalKV:
  192. * 删除全局数据
  193. * @param key 自定义事件的key
  194. */
  195. + (void)removeGlobalKV:(NSString *)key;
  196. /**
  197. * @method trackPageBegin
  198. * 开始跟踪某一页面(可选),记录页面打开时间
  199. 建议在viewWillAppear或者viewDidAppear方法里调用
  200. * @param pageName 页面名称(自定义)
  201. */
  202. + (void)trackPageBegin:(NSString *)pageName;
  203. /**
  204. * @method trackPageEnd
  205. * 结束某一页面的跟踪(可选),记录页面的关闭时间
  206. 此方法与trackPageBegin方法结对使用,
  207. 在iOS应用中建议在viewWillDisappear或者viewDidDisappear方法里调用
  208. 在Watch应用中建议在DidDeactivate方法里调用
  209. * @param pageName 页面名称,请跟trackPageBegin方法的页面名称保持一致
  210. */
  211. + (void)trackPageEnd:(NSString *)pageName;
  212. #if TARGET_OS_IOS
  213. + (void)onPlaceOrder:(NSString *)profileId order:(TalkingDataOrder *)order API_DEPRECATED_WITH_REPLACEMENT("onPlaceOrder:amount:currencyType:", ios(1, 1));
  214. + (void)onOrderPaySucc:(NSString *)profileId payType:(NSString *)payType order:(TalkingDataOrder *)order API_DEPRECATED_WITH_REPLACEMENT("onOrderPaySucc:amount:currencyType:paymentType:", ios(1, 1));
  215. /**
  216. * @method onPlaceOrder 下单
  217. * @param orderId 订单ID 类型:NSString
  218. * @param amount 金额 类型:int
  219. * @param currencyType 货币类型 类型:NSString
  220. */
  221. + (void)onPlaceOrder:(NSString *)orderId amount:(int)amount currencyType:(NSString *)currencyType;
  222. /**
  223. * @method onOrderPaySucc 支付订单
  224. * @param orderId 订单ID 类型:NSString
  225. * @param amount 金额 类型:int
  226. * @param currencyType 货币类型 类型:NSString
  227. * @param paymentType 支付类型 类型:NSString
  228. */
  229. + (void)onOrderPaySucc:(NSString *)orderId amount:(int)amount currencyType:(NSString *)currencyType paymentType:(NSString *)paymentType;
  230. /**
  231. * @method onCancelOrder 取消订单
  232. * @param orderId 订单ID 类型:NSString
  233. * @param amount 金额 类型:int
  234. * @param currencyType 货币类型 类型:NSString
  235. */
  236. + (void)onCancelOrder:(NSString *)orderId amount:(int)amount currencyType:(NSString *)currencyType;
  237. /**
  238. * @method onViewItem
  239. * @param itemId 商品Id 类型:NSString
  240. * @param category 商品类别 类型:NSString
  241. * @param name 商品名称 类型:NSString
  242. * @param unitPrice 商品单价 类型:int
  243. */
  244. + (void)onViewItem:(NSString *)itemId category:(NSString *)category name:(NSString *)name unitPrice:(int)unitPrice;
  245. /**
  246. * @method onAddItemToShoppingCart
  247. * @param itemId 商品Id 类型:NSString
  248. * @param category 商品类别 类型:NSString
  249. * @param name 商品名称 类型:NSString
  250. * @param unitPrice 商品单价 类型:int
  251. * @param amount 商品数量 类型:int
  252. */
  253. + (void)onAddItemToShoppingCart:(NSString *)itemId category:(NSString *)category name:(NSString *)name unitPrice:(int)unitPrice amount:(int)amount;
  254. /**
  255. * @method onViewShoppingCart
  256. * @param shoppingCart 购物车信息 类型:TalkingDataShoppingCart
  257. */
  258. + (void)onViewShoppingCart:(TalkingDataShoppingCart *)shoppingCart;
  259. #endif
  260. #if TARGET_OS_IOS
  261. /**
  262. * @method handleUrl
  263. * 灵动分析扫码唤起接口
  264. * @param url 唤起灵动的url
  265. */
  266. + (BOOL)handleUrl:(NSURL *)url;
  267. /**
  268. * @method bindWKWebView
  269. * hybrid 初始化的时候 绑定wkwebview·
  270. * @param wkwebview 支持灵动事件的wkwebview
  271. */
  272. + (void)bindWKWebView:(WKWebView*)wkwebview API_AVAILABLE(ios(8.0));
  273. /**
  274. * @method loadWKWebViewConfig
  275. * hybrid 完成加载的时候,load一下hybrid灵动的配置。
  276. * @param wkwebview 支持灵动事件的webView
  277. */
  278. + (void)loadWKWebViewConfig:(WKWebView*)wkwebview API_AVAILABLE(ios(8.0));
  279. #endif
  280. @end