TalkingData.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  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. // 以下枚举用于WatchApp页面追踪
  69. typedef enum {
  70. TDPageTypeGlance = 1,
  71. TDPageTypeNotification = 2,
  72. TDPageTypeWatchApp = 3
  73. } TDPageType;
  74. typedef NS_ENUM(NSUInteger, TDVendorIdType) {
  75. TDVendorIdTypeZX = 1, // 卓信
  76. TDVendorIdTypeGX = 2, // 广协
  77. };
  78. @interface TalkingData: NSObject
  79. /**
  80. * @method getDeviceID
  81. * 获取SDK所使用的DeviceID
  82. * @return DeviceID
  83. */
  84. + (NSString *)getDeviceID;
  85. + (void)setVendorID:(NSString *)vendorID ofType:(TDVendorIdType)type;
  86. /**
  87. * @method setLogEnabled
  88. * 统计日志开关(可选)
  89. * @param enable 默认是开启状态
  90. */
  91. + (void)setLogEnabled:(BOOL)enable;
  92. #if TARGET_OS_IOS
  93. /**
  94. * @method setExceptionReportEnabled
  95. * 是否捕捉程序崩溃记录(可选)
  96. * 如果需要记录程序崩溃日志,请将值设成YES,并且在初始化后尽早调用
  97. * @param enable 默认是 NO
  98. */
  99. + (void)setExceptionReportEnabled:(BOOL)enable;
  100. /**
  101. * @method setSignalReportEnabled
  102. * 是否捕捉异常信号(可选)
  103. * 如果需要开启异常信号捕捉功能,请将值设成YES,并且在初始化后尽早调用
  104. * @param enable 默认是NO
  105. */
  106. + (void)setSignalReportEnabled:(BOOL)enable;
  107. #endif
  108. #if TARGET_OS_IOS
  109. /**
  110. * @method setLatitude:longitude:
  111. * 设置位置信息(可选)
  112. * @param latitude 维度
  113. * @param longitude 经度
  114. */
  115. + (void)setLatitude:(double)latitude longitude:(double)longitude;
  116. #endif
  117. /**
  118. * @method backgroundSessionEnabled
  119. * 开启后台使用时长统计,需在SDK初始化之前调用。
  120. */
  121. + (void)backgroundSessionEnabled;
  122. #if TARGET_OS_IOS
  123. /**
  124. * @method sessionStarted:withChannelId:
  125. * 初始化统计实例,请在application:didFinishLaunchingWithOptions:方法里调用
  126. * @param appKey 应用的唯一标识,统计后台注册得到
  127. * @param channelId 渠道名,如“app store”(可选)
  128. */
  129. + (void)sessionStarted:(NSString *)appKey withChannelId:(NSString *)channelId;
  130. #endif
  131. #if TARGET_OS_WATCH
  132. /**
  133. * @method initWithWatch:
  134. * 初始化WatchApp统计实例,请在每个入口类的init方法里调用
  135. * @param appKey 应用的唯一标识,统计后台注册得到
  136. */
  137. + (void)initWithWatch:(NSString *)appKey;
  138. #endif
  139. /**
  140. * @method setProfileId:
  141. * 设置帐户ID
  142. * @param profileId 账户ID
  143. */
  144. + (void)setProfileId:(NSString *)profileId API_DEPRECATED("", ios(1, 1));
  145. #if TARGET_OS_IOS
  146. /**
  147. * @method onRegister 注册
  148. * @param profileId 账户ID
  149. * @param type 账户类型
  150. * @param name 账户昵称
  151. */
  152. + (void)onRegister:(NSString *)profileId type:(TDProfileType)type name:(NSString *)name;
  153. /**
  154. * @method onLogin 登录
  155. * @param profileId 账户ID
  156. * @param type 账户类型
  157. * @param name 账户昵称
  158. */
  159. + (void)onLogin:(NSString *)profileId type:(TDProfileType)type name:(NSString *)name;
  160. #endif
  161. /**
  162. * @method trackEvent
  163. * 统计自定义事件(可选),如购买动作
  164. * @param eventId 事件名称(自定义)
  165. */
  166. + (void)trackEvent:(NSString *)eventId;
  167. /**
  168. * @method trackEvent:label:
  169. * 统计带标签的自定义事件(可选),可用标签来区别同一个事件的不同应用场景
  170. 如购买某一特定的商品
  171. * @param eventId 事件名称(自定义)
  172. * @param eventLabel 事件标签(自定义)
  173. */
  174. + (void)trackEvent:(NSString *)eventId label:(NSString *)eventLabel;
  175. /**
  176. * @method trackEvent:label:parameters
  177. * 统计带二级参数的自定义事件,单次调用的参数数量不能超过10个
  178. * @param eventId 事件名称(自定义)
  179. * @param eventLabel 事件标签(自定义)
  180. * @param parameters 事件参数 (key只支持NSString, value支持NSString和NSNumber)
  181. */
  182. + (void)trackEvent:(NSString *)eventId
  183. label:(NSString *)eventLabel
  184. parameters:(NSDictionary *)parameters;
  185. /**
  186. * @method trackEvent:label:parameters:value:
  187. * 数值事件
  188. * @param eventId 事件名称(自定义)
  189. * @param eventLabel 事件标签(自定义)
  190. * @param parameters 事件参数 (key只支持NSString, value支持NSString和NSNumber)
  191. * @param eventValue 事件数值(double)
  192. */
  193. + (void)trackEvent:(NSString *)eventId
  194. label:(NSString *)eventLabel
  195. parameters:(NSDictionary *)parameters
  196. value:(double)eventValue;
  197. /**
  198. * @method setGlobalKV:value:
  199. * 添加全局的字段,这里的内容会每次的自定义事都会带着,发到服务器。也就是说如果您的自定义事件中每一条都需要带同样的内容,如用户名称等,就可以添加进去
  200. * @param key 自定义事件的key,如果在之后,创建自定义的时候,有相同的key,则会覆盖,全局的里相同key的内容
  201. * @param value 这里是NSObject类型,或者是NSString 或者NSNumber类型
  202. */
  203. + (void)setGlobalKV:(NSString *)key value:(id)value;
  204. /**
  205. * @method removeGlobalKV:
  206. * 删除全局数据
  207. * @param key 自定义事件的key
  208. */
  209. + (void)removeGlobalKV:(NSString *)key;
  210. /**
  211. * @method trackPageBegin
  212. * 开始跟踪某一页面(可选),记录页面打开时间
  213. 建议在viewWillAppear或者viewDidAppear方法里调用
  214. * @param pageName 页面名称(自定义)
  215. */
  216. + (void)trackPageBegin:(NSString *)pageName;
  217. /**
  218. * @method trackPageBegin:withPageType:
  219. * 开始跟踪WatchApp某一页面(可选),记录页面打开时间
  220. 建议在willActivate方法里调用
  221. * @param pageName 页面名称(自定义)
  222. * @param pageType 页面类型(TDPageType枚举类型)
  223. */
  224. + (void)trackPageBegin:(NSString *)pageName withPageType:(TDPageType)pageType;
  225. /**
  226. * @method trackPageEnd
  227. * 结束某一页面的跟踪(可选),记录页面的关闭时间
  228. 此方法与trackPageBegin方法结对使用,
  229. 在iOS应用中建议在viewWillDisappear或者viewDidDisappear方法里调用
  230. 在Watch应用中建议在DidDeactivate方法里调用
  231. * @param pageName 页面名称,请跟trackPageBegin方法的页面名称保持一致
  232. */
  233. + (void)trackPageEnd:(NSString *)pageName;
  234. //#if TARGET_OS_IOS
  235. //+ (void)onPlaceOrder:(NSString *)profileId order:(TalkingDataOrder *)order API_DEPRECATED_WITH_REPLACEMENT("onPlaceOrder:amount:currencyType:", ios(1, 1));
  236. //
  237. //+ (void)onOrderPaySucc:(NSString *)profileId payType:(NSString *)payType order:(TalkingDataOrder *)order API_DEPRECATED_WITH_REPLACEMENT("onOrderPaySucc:amount:currencyType:paymentType:", ios(1, 1));
  238. //
  239. ///**
  240. // * @method onPlaceOrder 下单
  241. // * @param orderId 订单ID 类型:NSString
  242. // * @param amount 金额 类型:int
  243. // * @param currencyType 货币类型 类型:NSString
  244. // */
  245. //+ (void)onPlaceOrder:(NSString *)orderId amount:(int)amount currencyType:(NSString *)currencyType;
  246. //
  247. ///**
  248. // * @method onOrderPaySucc 支付订单
  249. // * @param orderId 订单ID 类型:NSString
  250. // * @param amount 金额 类型:int
  251. // * @param currencyType 货币类型 类型:NSString
  252. // * @param paymentType 支付类型 类型:NSString
  253. // */
  254. //+ (void)onOrderPaySucc:(NSString *)orderId amount:(int)amount currencyType:(NSString *)currencyType paymentType:(NSString *)paymentType;
  255. //
  256. ///**
  257. // * @method onCancelOrder 取消订单
  258. // * @param orderId 订单ID 类型:NSString
  259. // * @param amount 金额 类型:int
  260. // * @param currencyType 货币类型 类型:NSString
  261. // */
  262. //+ (void)onCancelOrder:(NSString *)orderId amount:(int)amount currencyType:(NSString *)currencyType;
  263. //
  264. ///**
  265. // * @method onViewItem
  266. // * @param itemId 商品Id 类型:NSString
  267. // * @param category 商品类别 类型:NSString
  268. // * @param name 商品名称 类型:NSString
  269. // * @param unitPrice 商品单价 类型:int
  270. // */
  271. //+ (void)onViewItem:(NSString *)itemId category:(NSString *)category name:(NSString *)name unitPrice:(int)unitPrice;
  272. //
  273. ///**
  274. // * @method onAddItemToShoppingCart
  275. // * @param itemId 商品Id 类型:NSString
  276. // * @param category 商品类别 类型:NSString
  277. // * @param name 商品名称 类型:NSString
  278. // * @param unitPrice 商品单价 类型:int
  279. // * @param amount 商品数量 类型:int
  280. // */
  281. //+ (void)onAddItemToShoppingCart:(NSString *)itemId category:(NSString *)category name:(NSString *)name unitPrice:(int)unitPrice amount:(int)amount;
  282. //
  283. ///**
  284. // * @method onViewShoppingCart
  285. // * @param shoppingCart 购物车信息 类型:TalkingDataShoppingCart
  286. // */
  287. //+ (void)onViewShoppingCart:(TalkingDataShoppingCart *)shoppingCart;
  288. //#endif
  289. #if TARGET_OS_IOS
  290. /**
  291. * @method setDeviceToken 设置DeviceToken
  292. * @param deviceToken 从Apple获取的DeviceToken
  293. */
  294. + (void)setDeviceToken:(NSData *)deviceToken;
  295. /**
  296. * @method handlePushMessage 处理来自TalkingData的Push消息
  297. * @param message 收到的消息
  298. * @return YES 来自TalkingData的消息,SDK已处理
  299. * NO 其他来源消息,开发者需自行处理
  300. */
  301. + (BOOL)handlePushMessage:(NSDictionary *)message;
  302. #endif
  303. #if TARGET_OS_IOS
  304. /**
  305. * @method handleUrl
  306. * 灵动分析扫码唤起接口
  307. * @param url 唤起灵动的url
  308. */
  309. + (BOOL)handleUrl:(NSURL *)url;
  310. /**
  311. * @method bindWKWebView
  312. * hybrid 初始化的时候 绑定wkwebview·
  313. * @param wkwebview 支持灵动事件的wkwebview
  314. */
  315. + (void)bindWKWebView:(WKWebView*)wkwebview;
  316. /**
  317. * @method loadWKWebViewConfig
  318. * hybrid 完成加载的时候,load一下hybrid灵动的配置。
  319. * @param wkwebview 支持灵动事件的webView
  320. */
  321. + (void)loadWKWebViewConfig:(WKWebView*)wkwebview;
  322. #endif
  323. @end