// // KBMaiPointReporter.h // keyBoard // #import #ifndef KB_MAI_POINT_BASE_URL #define KB_MAI_POINT_BASE_URL @"http://192.168.2.21:35310/api" #endif #ifndef KB_MAI_POINT_PATH_NEW_ACCOUNT #define KB_MAI_POINT_PATH_NEW_ACCOUNT @"/newAccount" #endif #ifndef KB_MAI_POINT_PATH_GENERIC_DATA #define KB_MAI_POINT_PATH_GENERIC_DATA @"/genericData" #endif NS_ASSUME_NONNULL_BEGIN extern NSString * const KBMaiPointErrorDomain; extern NSString * const KBMaiPointEventTypePageExposure; extern NSString * const KBMaiPointEventTypeClick; typedef void (^KBMaiPointReportCompletion)(BOOL success, NSError * _Nullable error); typedef NS_ENUM(NSInteger, KBMaiPointGenericReportType) { /// 未知/默认类型(按需扩展,具体含义以服务端约定为准) KBMaiPointGenericReportTypeUnknown = 0, /// 点击 KBMaiPointGenericReportTypeClick = 1, /// 曝光 KBMaiPointGenericReportTypeExposure = 2, /// 页面/进入 KBMaiPointGenericReportTypePage = 3, }; /// Lightweight reporter for Mai point tracking. Safe for app + extension. @interface KBMaiPointReporter : NSObject + (instancetype)sharedReporter; /// 统一埋点:POST /genericData /// - eventType: 建议取值 `page_exposure` / `click` /// - eventName: 统一事件名(如 enter_xxx / click_xxx) /// - value: 事件参数字典(内部会自动注入 token;无 token 时为 @"") - (void)reportEventType:(NSString *)eventType eventName:(NSString *)eventName value:(nullable NSDictionary *)value completion:(KBMaiPointReportCompletion _Nullable)completion; /// 页面曝光快捷方法:内部会补齐 page_id - (void)reportPageExposureWithEventName:(NSString *)eventName pageId:(NSString *)pageId extra:(nullable NSDictionary *)extra completion:(KBMaiPointReportCompletion _Nullable)completion; /// 点击快捷方法:内部会补齐 page_id / element_id - (void)reportClickWithEventName:(NSString *)eventName pageId:(NSString *)pageId elementId:(NSString *)elementId extra:(nullable NSDictionary *)extra completion:(KBMaiPointReportCompletion _Nullable)completion; /// POST /newAccount with type + account. - (void)reportNewAccountWithType:(NSString *)type account:(nullable NSString *)account completion:(KBMaiPointReportCompletion _Nullable)completion; //- (void)reportGenericDataWithEvent:(NSString *)event // account:(nullable NSString *)account // completion:(KBMaiPointReportCompletion _Nullable)completion; /// POST /genericData with type + event + account. - (void)reportGenericDataWithEventType:(KBMaiPointGenericReportType)type account:(nullable NSString *)account completion:(KBMaiPointReportCompletion _Nullable)completion; /// Generic POST for future endpoints. - (void)postPath:(NSString *)path parameters:(NSDictionary *)parameters completion:(KBMaiPointReportCompletion _Nullable)completion; @end NS_ASSUME_NONNULL_END