Files
keyboard/Shared/KBMaiPointReporter.h

88 lines
3.2 KiB
C
Raw Normal View History

2025-12-25 17:20:24 +08:00
//
// KBMaiPointReporter.h
// keyBoard
//
#import <Foundation/Foundation.h>
#ifndef KB_MAI_POINT_BASE_URL
2026-01-06 19:25:34 +08:00
#define KB_MAI_POINT_BASE_URL @"http://192.168.2.21:35310/api"
2025-12-25 17:20:24 +08:00
#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
2025-12-25 17:20:24 +08:00
NS_ASSUME_NONNULL_BEGIN
extern NSString * const KBMaiPointErrorDomain;
2026-01-06 19:25:34 +08:00
extern NSString * const KBMaiPointEventTypePageExposure;
extern NSString * const KBMaiPointEventTypeClick;
2025-12-25 17:20:24 +08:00
typedef void (^KBMaiPointReportCompletion)(BOOL success, NSError * _Nullable error);
typedef NS_ENUM(NSInteger, KBMaiPointGenericReportType) {
/// 未知/默认类型(按需扩展,具体含义以服务端约定为准)
KBMaiPointGenericReportTypeUnknown = 0,
/// 点击
KBMaiPointGenericReportTypeClick = 1,
/// 曝光
KBMaiPointGenericReportTypeExposure = 2,
/// 页面/进入
KBMaiPointGenericReportTypePage = 3,
};
2025-12-25 17:20:24 +08:00
/// Lightweight reporter for Mai point tracking. Safe for app + extension.
@interface KBMaiPointReporter : NSObject
+ (instancetype)sharedReporter;
2026-01-06 19:25:34 +08:00
/// 统一埋点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;
2025-12-25 17:20:24 +08:00
/// POST /newAccount with type + account.
- (void)reportNewAccountWithType:(NSString *)type
account:(nullable NSString *)account
2025-12-25 17:20:24 +08:00
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;
2025-12-25 17:20:24 +08:00
/// Generic POST for future endpoints.
- (void)postPath:(NSString *)path
parameters:(NSDictionary *)parameters
completion:(KBMaiPointReportCompletion _Nullable)completion;
@end
NS_ASSUME_NONNULL_END