SPMTrackerLog.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. //
  2. // SPMTrackerLog.h
  3. // SPMTracker
  4. //
  5. // Created by BoTao on 2017/2/3.
  6. // Copyright © 2017年 Alipay. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #ifndef SPMTrackerLog_h
  10. #define SPMTrackerLog_h
  11. #define kSPMActionOpenPage @"openPage"
  12. #define kSPMActionClicked @"clicked"
  13. #define kSPMActionSlided @"slided"
  14. #define kSPMActionExposure @"exposure"
  15. #define kSPMMonitorChInfoKey @"chInfo"
  16. #define kSPMPageIDKey @"pagets"
  17. #define kSPMPageBackKey @"pageBack"
  18. NS_ASSUME_NONNULL_BEGIN
  19. __deprecated_msg("请使用SPMTracker.framework中的SPMTrackerLog")
  20. @interface SPMTrackerLog : NSObject
  21. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  22. // 行为埋点
  23. /**
  24. * 点击-行为埋点使用
  25. *
  26. * @param spmId SPM埋点ID
  27. * @param entityId 对应scmId、rpcId
  28. * @param bizCode 业务bizType,埋点平台申请
  29. * @param param4 扩展参数,业务自己根据需要填充。字典会被转换成key-value的字符串计入日志
  30. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  31. * @param loggerLevel 日志等级(LoggerLevelLow/LoggerLevelMedium/LoggerLevelHigh),默认为LoggerLevelMedium
  32. */
  33. + (void)clickedLogWithSpmId:(NSString *)spmId entityId:(NSString *)entityId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 view:(NSObject *)view logLevel:(NSString *)logLevel ;
  34. // 可以明确传递pageId时调用次方法,否则调用楼上的方法
  35. + (void)clickedLogWithSpmId:(NSString *)spmId entityId:(NSString *)entityId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 pageId:(NSString *)pageId logLevel:(NSString *)logLevel ;
  36. + (void)clickedLogWithSpmId:(NSString *)spmId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 view:(NSObject *)view logLevel:(NSString *)logLevel ;
  37. + (void)clickedLogWithSpmId:(NSString *)spmId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 view:(NSObject *)view ;
  38. /**
  39. * 翻页-行为埋点使用
  40. *
  41. * @param spmId SPM埋点ID
  42. * @param entityId 对应scmId、rpcId
  43. * @param bizCode 业务bizType,埋点平台申请
  44. * @param param4 扩展参数,业务自己根据需要填充。字典会被转换成key-value的字符串计入日志
  45. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  46. * @param loggerLevel 日志等级(LoggerLevelLow/LoggerLevelMedium/LoggerLevelHigh),默认为LoggerLevelMedium
  47. */
  48. + (void)slideLogWithSpmId:(NSString *)spmId entityId:(NSString *)entityId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 view:(NSObject *)view logLevel:(NSString *)logLevel ;
  49. + (void)slideLogWithSpmId:(NSString *)spmId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 view:(NSObject *)view logLevel:(NSString *)logLevel ;
  50. + (void)slideLogWithSpmId:(NSString *)spmId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 view:(NSObject *)view ;
  51. /**
  52. * 曝光-行为埋点使用
  53. *
  54. * @param spmId SPM埋点ID
  55. * @param entityId 对应scmId、rpcId
  56. * @param bizCode 业务bizType,埋点平台申请
  57. * @param param4 扩展参数,业务自己根据需要填充。字典会被转换成key-value的字符串计入日志
  58. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  59. * @param loggerLevel 日志等级(LoggerLevelLow/LoggerLevelMedium/LoggerLevelHigh),默认为LoggerLevelMedium
  60. */
  61. + (void)exposureLogWithSpmId:(NSString *)spmId entityId:(NSString *)entityId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 view:(NSObject *)view logLevel:(NSString *)logLevel ;
  62. // 可以明确传递pageId时调用次方法,否则调用楼上的方法
  63. + (void)exposureLogWithSpmId:(NSString *)spmId entityId:(NSString *)entityId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 pageId:(NSString *)pageId logLevel:(NSString *)logLevel ;
  64. + (void)exposureLogWithSpmId:(NSString *)spmId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 view:(NSObject *)view logLevel:(NSString *)logLevel ;
  65. + (void)exposureLogWithSpmId:(NSString *)spmId bizCode:(NSString *)bizCode extParams4:(nullable NSDictionary *)param4 view:(NSObject *)view ;
  66. /*
  67. * 合并曝光
  68. * 推荐使用,解决列表元素曝光需求,每个元素不会重复曝光,储存曝光日志,达到上报条件时,多条曝光日志合并后上报埋点
  69. * 合并曝光文档:https://lark.alipay.com/data/help/willav
  70. *
  71. * @param spmId: 埋点SPMID,不可为空
  72. * @param entityId 对应scmId、rpcId
  73. * @param bizCode 业务bizType,埋点平台申请
  74. * @param rid: RPC唯一标示,可以时tracerid、recommondid等
  75. * @param pos: cell索引号,类似SPMID的N
  76. * @param extParams: 扩展参数,业务自己根据需要填充。字典会被转换成key-value的字符串计入日志
  77. * @param view: 埋点对应view,传vc对象最好,其次view对象,不能为空
  78. * @param loggerLevel 日志等级(LoggerLevelLow/LoggerLevelMedium/LoggerLevelHigh),默认为LoggerLevelMedium
  79. */
  80. + (void)mergerExposureLogWithSpmId:(NSString *)spmId entityId:(NSString *)entityId rid:(NSString *)rid position:(NSString *)pos bizCode:(NSString *)bizCode extParams:(NSDictionary *)extParams view:(NSObject *)view logLevel:(NSString *)logLevel;
  81. // 可以明确传递pageId时调用次方法,否则调用楼上的方法
  82. + (void)mergerExposureLogWithSpmId:(NSString *)spmId entityId:(NSString *)entityId rid:(NSString *)rid position:(NSString *)pos bizCode:(NSString *)bizCode extParams:(NSDictionary *)extParams pageId:(NSString *)pageId logLevel:(NSString *)logLevel;
  83. + (void)mergerExposureLogWithSpmId:(NSString *)spmId rid:(NSString *)rid position:(NSString *)pos bizCode:(NSString *)bizCode extParams:(NSDictionary *)extParams view:(NSObject *)view logLevel:(NSString *)logLevel;
  84. + (void)mergerExposureLogWithSpmId:(NSString *)spmId rid:(NSString *)rid position:(NSString *)pos bizCode:(NSString *)bizCode extParams:(NSDictionary *)extParams view:(NSObject *)view;
  85. /*
  86. * 上报合并曝光日志,上报成功后会清除已上报日志
  87. * pageMonitor的onViewWillDisappear中会调用,如果业务需要手工触发上报合并曝光日志,调用此方法
  88. *
  89. * @param spmId: 埋点SPMID,所有向后匹配的spmid都上报,例如a13.b42,则a13.b42.c11、a13.b42.c51.d222等合并曝光日志都上报并清除记录
  90. * @param view: 埋点对应view,传vc对象最好,其次view对象,不能为空
  91. */
  92. + (void)commiteMergerExposureLogWithSpmId:(NSString *)spmId view:(NSObject *)view;
  93. /**
  94. * @param actionId action ID 必填,标识一个埋点的类别,可用actionID定义在APMonitorPointDataDefines.h
  95. 文件中
  96. * @param extParams 扩展参数,业务自己根据需要填充。数组元素最多4个,第四个元素可以是字典,字典内容可自定义,字典会被转换成key-value的字符串计入日志
  97. * @param spmId 埋点ID(后端定义的,找@望乡生成)
  98. * @param entityId 对应scmId、rpcId
  99. * @param bizCode 业务bizType,埋点平台申请
  100. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  101. * @param loggerLevel 日志等级(LoggerLevelLow/LoggerLevelMedium/LoggerLevelHigh),默认为LoggerLevelMedium
  102. */
  103. + (void)writeLogWithActionId:(NSString *)actionId extParams:(NSArray *)extParams spmId:(NSString *)spmId entityId:(NSString *)entityId bizCode:(NSString *)bizCode view:(NSObject *)view logLevel:(NSString *)logLevel;
  104. + (void)writeLogWithActionId:(NSString *)actionId extParams:(NSArray *)extParams spmId:(NSString *)spmId bizCode:(NSString *)bizCode view:(nonnull NSObject *)view logLevel:(NSString *)logLevel;
  105. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  106. // pageMonitor
  107. /**
  108. * pageMonitor,记录chinfo信息,一般在scheme跳转的方法中最后调用该方法,logPageEndWithSpmId时使用chinfo信息,用完删除对应记录
  109. *
  110. * @param options scheme参数
  111. * @param viewController当前vc,作为记录信息的key
  112. *
  113. * @return 参数包含chinfo时,返回YES,否则NO
  114. */
  115. + (BOOL)spliteSchemaOptions:(NSDictionary *)options viewController:(NSObject *)viewController;
  116. /**
  117. * pageMonitor,更新chinfo信息
  118. *
  119. * @param info chInfo值
  120. * @param viewController当前vc,作为记录信息的key
  121. *
  122. */
  123. + (void)updateChInfo:(NSString *)info viewController:(NSObject *)viewController;
  124. /**
  125. * pageMonitor,根据vc获取chInfo
  126. */
  127. + (NSString *)chInfoForViewController:(NSObject *)vc;
  128. /**
  129. * pageMonitor,页面打开
  130. *
  131. * @param spmId 代表当前页面的spm
  132. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  133. *
  134. */
  135. + (void)onViewDidAppear:(NSString *)spmId view:(nonnull NSObject *)view;
  136. /**
  137. * pageMonitor,页面结束
  138. * @param spmId 代表当前页面的spm
  139. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  140. * @param bizCode 业务bizCode
  141. * @param param 手动埋点扩展参数4,底层保留key不要使用:chInfo
  142. */
  143. + (void)onViewWillDisappear:(NSString *)spmId view:(nonnull NSObject *)view bizCode:(NSString *)bizCode param:(NSDictionary *)param;
  144. /**
  145. * 清空pageid对应的所有埋点缓存数据,非必需调用
  146. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  147. */
  148. + (void)onDealloc:(nonnull NSObject *)view;
  149. /**
  150. * 对应onViewDidAppear:view:,H5专用
  151. */
  152. + (void)logPageStartWithSpmId:(NSString *)spmId index:(NSObject *)index;
  153. /**
  154. * 对应onViewWillDisappear:view:bizCode:param:,H5专用
  155. */
  156. + (void)logPageEndWithSpmId:(NSString *)spmId
  157. index:(NSObject *)index
  158. bizType:(nullable NSString *)bizType
  159. param:(nullable NSDictionary *)param;
  160. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  161. // pagets
  162. /**
  163. * RPC透传pageId,根据view获得pageId
  164. *
  165. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  166. *
  167. * @return 以pageId为value的字典
  168. **/
  169. + (NSDictionary* )headerParamsForPagets:(NSObject *)view;
  170. /**
  171. * 根据view获得miniPageId
  172. *
  173. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  174. *
  175. * @return miniPageId值
  176. **/
  177. + (NSString *)getMiniPageId:(NSObject *)view;
  178. /**
  179. * 根据view获得pageId
  180. *
  181. * @param view 埋点对应view,传vc对象最好,其次view对象,不能为空
  182. *
  183. * @return pageId值
  184. **/
  185. + (NSString *)getPageId:(NSObject *)view;
  186. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  187. // pageback
  188. /**
  189. * 设备页面回退标志黑名单
  190. *
  191. * @param pageBackDicBlack 不会被标记为退回的页面们的spmid,比如:钱包首页4大金刚之一口碑首页a13.b42
  192. **/
  193. +(void)updatePageBackDicBlack:(NSArray<NSString *> *)pageBackDicBlack;
  194. @end
  195. NS_ASSUME_NONNULL_END
  196. #endif