Skip to content

Commit

Permalink
fix: attributes type change to [String: Any]
Browse files Browse the repository at this point in the history
  • Loading branch information
YoloMao committed Apr 19, 2024
1 parent 0c71f25 commit 8fd746d
Show file tree
Hide file tree
Showing 17 changed files with 102 additions and 70 deletions.
12 changes: 6 additions & 6 deletions GrowingAutotracker/GrowingAutotracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ NS_ASSUME_NONNULL_BEGIN

/// 以登录用户的身份定义用户属性变量,用于用户信息相关分析。
/// @param attributes 用户属性信息
- (void)setLoginUserAttributes:(NSDictionary<NSString *, NSString *> *)attributes;
- (void)setLoginUserAttributes:(NSDictionary<NSString *, id> *)attributes;

/// 同步获取设备id,又称为匿名用户id,SDK 自动生成用来定义唯一设备。
- (NSString *)getDeviceId;
Expand All @@ -93,7 +93,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 发送一个自定义事件
/// @param eventName 自定义事件名称
/// @param attributes 事件发生时所伴随的维度信息
- (void)trackCustomEvent:(NSString *)eventName withAttributes:(NSDictionary<NSString *, NSString *> *)attributes;
- (void)trackCustomEvent:(NSString *)eventName withAttributes:(NSDictionary<NSString *, id> *)attributes;

/// 初始化事件计时器
/// @param eventName 自定义事件名称
Expand All @@ -115,7 +115,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 停止事件计时器,并发送一个自定义事件
/// @param timerId 计时器唯一标识
/// @param attributes 事件发生时所伴随的维度信息
- (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, NSString *> *)attributes;
- (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, id> *)attributes;

/// 删除事件计时器
/// @param timerId 计时器唯一标识
Expand All @@ -126,7 +126,7 @@ NS_ASSUME_NONNULL_BEGIN

/// 设置埋点通用属性
/// @param props 事件通用属性,相同字段的新值将覆盖旧值
+ (void)setGeneralProps:(NSDictionary<NSString *, NSString *> *)props;
+ (void)setGeneralProps:(NSDictionary<NSString *, id> *)props;

/// 清除指定字段的埋点通用属性
/// @param keys 通用属性指定字段
Expand All @@ -138,7 +138,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 设置埋点动态通用属性
/// @param dynamicGeneralPropsBlock 动态通用属性,其优先级大于通用属性
+ (void)registerDynamicGeneralPropsBlock:
(NSDictionary<NSString *, NSString *> * (^_Nullable)(void))dynamicGeneralPropsBlock;
(NSDictionary<NSString *, id> * (^_Nullable)(void))dynamicGeneralPropsBlock;

///-------------------------------
#pragma mark Autotrack Event
Expand All @@ -156,7 +156,7 @@ NS_ASSUME_NONNULL_BEGIN
/// @param attributes 事件发生时所伴随的维度信息
- (void)autotrackPage:(UIViewController *)controller
alias:(NSString *)alias
attributes:(NSDictionary<NSString *, NSString *> *)attributes
attributes:(NSDictionary<NSString *, id> *)attributes
NS_EXTENSION_UNAVAILABLE("AutotrackPage is not supported for iOS extensions.");

///-------------------------------
Expand Down
4 changes: 2 additions & 2 deletions GrowingAutotracker/GrowingAutotracker.m
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ + (instancetype)sharedInstance {
return sharedInstance;
}

+ (void)setGeneralProps:(NSDictionary<NSString *, NSString *> *)props {
+ (void)setGeneralProps:(NSDictionary<NSString *, id> *)props {
[[GrowingGeneralProps sharedInstance] setGeneralProps:props];
}

Expand All @@ -85,7 +85,7 @@ + (void)clearGeneralProps {
}

+ (void)registerDynamicGeneralPropsBlock:
(NSDictionary<NSString *, NSString *> * (^_Nullable)(void))dynamicGeneralPropsBlock {
(NSDictionary<NSString *, id> * (^_Nullable)(void))dynamicGeneralPropsBlock {
[[GrowingGeneralProps sharedInstance] registerDynamicGeneralPropsBlock:dynamicGeneralPropsBlock];
}

Expand Down
10 changes: 5 additions & 5 deletions GrowingTracker/GrowingTracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ NS_ASSUME_NONNULL_BEGIN

/// 以登录用户的身份定义用户属性变量,用于用户信息相关分析。
/// @param attributes 用户属性信息
- (void)setLoginUserAttributes:(NSDictionary<NSString *, NSString *> *)attributes;
- (void)setLoginUserAttributes:(NSDictionary<NSString *, id> *)attributes;

/// 同步获取设备id,又称为匿名用户id,SDK 自动生成用来定义唯一设备。
- (NSString *)getDeviceId;
Expand All @@ -86,7 +86,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 发送一个自定义事件
/// @param eventName 自定义事件名称
/// @param attributes 事件发生时所伴随的维度信息
- (void)trackCustomEvent:(NSString *)eventName withAttributes:(NSDictionary<NSString *, NSString *> *)attributes;
- (void)trackCustomEvent:(NSString *)eventName withAttributes:(NSDictionary<NSString *, id> *)attributes;

/// 初始化事件计时器
/// @param eventName 自定义事件名称
Expand All @@ -108,7 +108,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 停止事件计时器,并发送一个自定义事件
/// @param timerId 计时器唯一标识
/// @param attributes 事件发生时所伴随的维度信息
- (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, NSString *> *)attributes;
- (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, id> *)attributes;

/// 删除事件计时器
/// @param timerId 计时器唯一标识
Expand All @@ -119,7 +119,7 @@ NS_ASSUME_NONNULL_BEGIN

/// 设置埋点通用属性
/// @param props 事件通用属性,相同字段的新值将覆盖旧值
+ (void)setGeneralProps:(NSDictionary<NSString *, NSString *> *)props;
+ (void)setGeneralProps:(NSDictionary<NSString *, id> *)props;

/// 清除指定字段的埋点通用属性
/// @param keys 通用属性指定字段
Expand All @@ -131,7 +131,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 设置埋点动态通用属性
/// @param dynamicGeneralPropsBlock 动态通用属性,其优先级大于通用属性
+ (void)registerDynamicGeneralPropsBlock:
(NSDictionary<NSString *, NSString *> * (^_Nullable)(void))dynamicGeneralPropsBlock;
(NSDictionary<NSString *, id> * (^_Nullable)(void))dynamicGeneralPropsBlock;

///-------------------------------
#pragma mark Unavailable
Expand Down
4 changes: 2 additions & 2 deletions GrowingTracker/GrowingTracker.m
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ + (instancetype)sharedInstance {
return sharedInstance;
}

+ (void)setGeneralProps:(NSDictionary<NSString *, NSString *> *)props {
+ (void)setGeneralProps:(NSDictionary<NSString *, id> *)props {
[[GrowingGeneralProps sharedInstance] setGeneralProps:props];
}

Expand All @@ -85,7 +85,7 @@ + (void)clearGeneralProps {
}

+ (void)registerDynamicGeneralPropsBlock:
(NSDictionary<NSString *, NSString *> * (^_Nullable)(void))dynamicGeneralPropsBlock {
(NSDictionary<NSString *, id> * (^_Nullable)(void))dynamicGeneralPropsBlock {
[[GrowingGeneralProps sharedInstance] registerDynamicGeneralPropsBlock:dynamicGeneralPropsBlock];
}

Expand Down
7 changes: 4 additions & 3 deletions GrowingTrackerCore/Event/Base/GrowingBaseEvent.m
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#import "GrowingTrackerCore/Network/GrowingNetworkInterfaceManager.h"
#import "GrowingTrackerCore/Public/GrowingFieldsIgnore.h"
#import "GrowingTrackerCore/Utils/GrowingDeviceInfo.h"
#import "GrowingTrackerCore/Utils/GrowingArgumentChecker.h"
#import "GrowingULTimeUtil.h"

@implementation GrowingBaseEvent
Expand Down Expand Up @@ -160,7 +161,7 @@ - (void)readPropertyInTrackThread {
if (_attributes.count > 0) {
[finalAttributes addEntriesFromDictionary:_attributes];
}
_attributes = finalAttributes.copy;
_attributes = [GrowingArgumentChecker serializableAttributes:finalAttributes];
}

- (GrowingBaseBuilder * (^)(NSString *value))setDataSourceId {
Expand Down Expand Up @@ -359,8 +360,8 @@ - (void)readPropertyInTrackThread {
};
}

- (GrowingBaseBuilder * (^)(NSDictionary<NSString *, NSObject *> *value))setAttributes {
return ^(NSDictionary<NSString *, NSObject *> *value) {
- (GrowingBaseBuilder * (^)(NSDictionary<NSString *, id> *value))setAttributes {
return ^(NSDictionary<NSString *, id> *value) {
self->_attributes = value;
return self;
};
Expand Down
10 changes: 7 additions & 3 deletions GrowingTrackerCore/Event/GrowingEventGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,19 @@
#import "GrowingTrackerCore/Event/GrowingCustomEvent.h"
#import "GrowingTrackerCore/Event/GrowingVisitEvent.h"

NS_ASSUME_NONNULL_BEGIN

@interface GrowingEventGenerator : NSObject

+ (void)generateVisitEvent;

+ (void)generateCustomEvent:(NSString *_Nonnull)name
attributes:(NSDictionary<NSString *, NSObject *> *_Nullable)attributes;
+ (void)generateCustomEvent:(NSString *)name
attributes:(NSDictionary<NSString *, id> *_Nullable)attributes;

+ (void)generateLoginUserAttributesEvent:(NSDictionary<NSString *, NSObject *> *_Nonnull)attributes;
+ (void)generateLoginUserAttributesEvent:(NSDictionary<NSString *, id> *)attributes;

+ (void)generateAppCloseEvent;

@end

NS_ASSUME_NONNULL_END
6 changes: 3 additions & 3 deletions GrowingTrackerCore/Event/GrowingEventGenerator.m
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ + (void)generateVisitEvent {
}];
}

+ (void)generateCustomEvent:(NSString *_Nonnull)name
attributes:(NSDictionary<NSString *, NSObject *> *_Nullable)attributes {
+ (void)generateCustomEvent:(NSString *)name
attributes:(NSDictionary<NSString *, id> *_Nullable)attributes {
[GrowingDispatchManager dispatchInGrowingThread:^{
GrowingBaseBuilder *builder = GrowingCustomEvent.builder.setEventName(name).setAttributes(attributes);
[[GrowingEventManager sharedInstance] postEventBuilder:builder];
}];
}

+ (void)generateLoginUserAttributesEvent:(NSDictionary<NSString *, NSObject *> *_Nonnull)attributes {
+ (void)generateLoginUserAttributesEvent:(NSDictionary<NSString *, id> *)attributes {
[GrowingDispatchManager dispatchInGrowingThread:^{
GrowingBaseBuilder *builder = GrowingLoginUserAttributesEvent.builder.setAttributes(attributes);
[[GrowingEventManager sharedInstance] postEventBuilder:builder];
Expand Down
4 changes: 2 additions & 2 deletions GrowingTrackerCore/Event/GrowingGeneralProps.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ NS_ASSUME_NONNULL_BEGIN

- (NSDictionary<NSString *, NSString *> *)getGeneralProps;

- (void)setGeneralProps:(NSDictionary<NSString *, NSString *> *)props;
- (void)setGeneralProps:(NSDictionary<NSString *, id> *)props;

- (void)removeGeneralProps:(NSArray<NSString *> *)keys;

- (void)clearGeneralProps;

- (void)registerDynamicGeneralPropsBlock:
(NSDictionary<NSString *, NSString *> * (^_Nullable)(void))dynamicGeneralPropsBlock;
(NSDictionary<NSString *, id> * (^_Nullable)(void))dynamicGeneralPropsBlock;

- (void)buildDynamicGeneralProps;

Expand Down
19 changes: 3 additions & 16 deletions GrowingTrackerCore/Event/GrowingGeneralProps.m
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ + (instancetype)sharedInstance {
// dynamic general properties > general properties
NSMutableDictionary *properties = self.internalProps.mutableCopy;
[properties addEntriesFromDictionary:self.dynamicProps];
return [self validProperties:properties];
return properties;
});
return [props copy];
}

- (void)setGeneralProps:(NSDictionary<NSString *, NSString *> *)props {
- (void)setGeneralProps:(NSDictionary<NSString *, id> *)props {
if ([GrowingArgumentChecker isIllegalAttributes:props]) {
return;
}
Expand All @@ -85,7 +85,7 @@ - (void)clearGeneralProps {
}

- (void)registerDynamicGeneralPropsBlock:
(NSDictionary<NSString *, NSString *> * (^_Nullable)(void))dynamicGeneralPropsBlock {
(NSDictionary<NSString *, id> * (^_Nullable)(void))dynamicGeneralPropsBlock {
GROWING_RW_LOCK_WRITE(lock, ^{
self.dynamicPropsBlock = dynamicGeneralPropsBlock;
});
Expand All @@ -103,19 +103,6 @@ - (void)buildDynamicGeneralProps {
});
}

- (NSDictionary<NSString *, NSString *> *)validProperties:(NSDictionary *)properties {
NSMutableDictionary *result = [NSMutableDictionary dictionary];
for (NSString *key in properties.allKeys) {
id value = properties[key];
if ([value isKindOfClass:[NSString class]]) {
result[key] = value;
} else if ([value isKindOfClass:[NSNumber class]]) {
result[key] = ((NSNumber *)value).stringValue;
}
}
return [result copy];
}

#pragma mark - Setter && Getter

- (NSMutableDictionary<NSString *, NSString *> *)internalProps {
Expand Down
8 changes: 4 additions & 4 deletions GrowingTrackerCore/GrowingRealTracker.m
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ - (void)trackCustomEvent:(NSString *)eventName {
}];
}

- (void)trackCustomEvent:(NSString *)eventName withAttributes:(NSDictionary<NSString *, NSString *> *)attributes {
- (void)trackCustomEvent:(NSString *)eventName withAttributes:(NSDictionary<NSString *, id> *)attributes {
if ([GrowingArgumentChecker isIllegalEventName:eventName] ||
[GrowingArgumentChecker isIllegalAttributes:attributes]) {
return;
Expand All @@ -148,7 +148,7 @@ - (void)trackCustomEvent:(NSString *)eventName withAttributes:(NSDictionary<NSSt
}];
}

- (void)setLoginUserAttributes:(NSDictionary<NSString *, NSString *> *)attributes {
- (void)setLoginUserAttributes:(NSDictionary<NSString *, id> *)attributes {
if ([GrowingArgumentChecker isIllegalAttributes:attributes]) {
return;
}
Expand Down Expand Up @@ -183,7 +183,7 @@ - (void)trackTimerEnd:(NSString *)timerId {
[GrowingEventTimer trackTimerEnd:timerId withAttributes:nil];
}

- (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, NSString *> *)attributes {
- (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, id> *)attributes {
if ([GrowingArgumentChecker isIllegalEventName:timerId] ||
[GrowingArgumentChecker isIllegalAttributes:attributes]) {
return;
Expand All @@ -202,7 +202,7 @@ - (void)clearTrackTimer {
[GrowingEventTimer clearAllTimers];
}

- (void)setGeneralProps:(NSDictionary<NSString *, NSString *> *)props {
- (void)setGeneralProps:(NSDictionary<NSString *, id> *)props {
[[GrowingGeneralProps sharedInstance] setGeneralProps:props];
}

Expand Down
6 changes: 3 additions & 3 deletions GrowingTrackerCore/Public/GrowingBaseEvent.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ typedef NS_ENUM(NSUInteger, GrowingEventScene) {
@property (nonatomic, copy, readonly) NSString *timezoneOffset;
@property (nonatomic, assign, readonly) GrowingEventScene scene;
@property (nonatomic, assign) GrowingEventSendPolicy sendPolicy;
@property (nonatomic, copy, readonly) NSDictionary<NSString *, NSObject *> *attributes;
@property (nonatomic, copy, readonly) NSDictionary<NSString *, id> *attributes;

- (NSDictionary *_Nonnull)toDictionary;

Expand Down Expand Up @@ -113,7 +113,7 @@ typedef NS_ENUM(NSUInteger, GrowingEventScene) {
@property (nonatomic, copy, readonly, nullable) NSString *userKey;
@property (nonatomic, copy, readonly) NSString *timezoneOffset;
@property (nonatomic, assign, readonly) GrowingEventScene scene;
@property (nonatomic, copy, readonly) NSDictionary<NSString *, NSObject *> *attributes;
@property (nonatomic, copy, readonly) NSDictionary<NSString *, id> *attributes;

- (void)readPropertyInTrackThread;

Expand Down Expand Up @@ -145,7 +145,7 @@ typedef NS_ENUM(NSUInteger, GrowingEventScene) {
- (GrowingBaseBuilder * (^)(NSString *value))setEventType;
- (GrowingBaseBuilder * (^)(NSString *value))setTimezoneOffset;
- (GrowingBaseBuilder * (^)(GrowingEventScene value))setScene;
- (GrowingBaseBuilder * (^)(NSDictionary<NSString *, NSObject *> *value))setAttributes;
- (GrowingBaseBuilder * (^)(NSDictionary<NSString *, id> *value))setAttributes;
- (GrowingBaseEvent *)build;

@end
Expand Down
2 changes: 1 addition & 1 deletion GrowingTrackerCore/Timer/GrowingEventTimer.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ NS_ASSUME_NONNULL_BEGIN

+ (void)trackTimerResume:(NSString *)timerId;

+ (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, NSString *> *_Nullable)attributes;
+ (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, id> *_Nullable)attributes;

+ (void)removeTimer:(NSString *)timerId;

Expand Down
2 changes: 1 addition & 1 deletion GrowingTrackerCore/Timer/GrowingEventTimer.m
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ + (void)trackTimerResume:(NSString *)timerId {
}];
}

+ (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, NSString *> *_Nullable)attributes {
+ (void)trackTimerEnd:(NSString *)timerId withAttributes:(NSDictionary<NSString *, id> *_Nullable)attributes {
double currentTime = [GrowingULTimeUtil currentSystemTimeMillis];

[GrowingDispatchManager dispatchInGrowingThread:^{
Expand Down
1 change: 1 addition & 0 deletions GrowingTrackerCore/Utils/GrowingArgumentChecker.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@
+ (BOOL)isIllegalEventName:(NSString *)eventName;
+ (BOOL)isIllegalAttributes:(NSDictionary *)attributes;
+ (BOOL)isIllegalKeys:(NSArray *)keys;
+ (NSDictionary<NSString *, NSString *> *)serializableAttributes:(NSDictionary *)properties;

@end
Loading

0 comments on commit 8fd746d

Please sign in to comment.