285 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			C
		
	
	
	
		
		
			
		
	
	
			285 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			C
		
	
	
	
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//  TDAnalytics+Multiple.h
							 | 
						||
| 
								 | 
							
								//  ThinkingSDK
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//  Created by 杨雄 on 2023/8/17.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if __has_include(<ThinkingSDK/TDAnalytics.h>)
							 | 
						||
| 
								 | 
							
								#import <ThinkingSDK/TDAnalytics.h>
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#import "TDAnalytics.h"
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NS_ASSUME_NONNULL_BEGIN
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@interface TDAnalytics (Multiple)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//MARK: track
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Empty the cache queue. When this api is called, the data in the current cache queue will attempt to be reported.
							 | 
						||
| 
								 | 
							
								 If the report succeeds, local cache data will be deleted.
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)flushWithAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Switch reporting status
							 | 
						||
| 
								 | 
							
								 @param status TDTrackStatus reporting status
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)setTrackStatus:(TDTrackStatus)status withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Track Events
							 | 
						||
| 
								 | 
							
								 @param eventName event name
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)track:(NSString *)eventName withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Track Events
							 | 
						||
| 
								 | 
							
								 @param eventName  event name
							 | 
						||
| 
								 | 
							
								 @param properties event properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)track:(NSString *)eventName properties:(nullable NSDictionary *)properties withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Track Events
							 | 
						||
| 
								 | 
							
								 @param eventName event name
							 | 
						||
| 
								 | 
							
								 @param properties event properties
							 | 
						||
| 
								 | 
							
								 @param time event trigger time
							 | 
						||
| 
								 | 
							
								 @param timeZone event trigger time time zone
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)track:(NSString *)eventName properties:(nullable NSDictionary *)properties time:(NSDate *)time timeZone:(NSTimeZone *)timeZone withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Track Events
							 | 
						||
| 
								 | 
							
								 @param eventModel event Model
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)trackWithEventModel:(TDEventModel *)eventModel withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Timing Events
							 | 
						||
| 
								 | 
							
								 Record the event duration, call this method to start the timing, stop the timing when the target event is uploaded, and add the attribute #duration to the event properties, in seconds.
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)timeEvent:(NSString *)eventName withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//MARK: user property
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Sets the user property, replacing the original value with the new value if the property already exists.
							 | 
						||
| 
								 | 
							
								 @param properties user properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)userSet:(NSDictionary *)properties withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Sets a single user attribute, ignoring the new attribute value if the attribute already exists.
							 | 
						||
| 
								 | 
							
								 @param properties user properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)userSetOnce:(NSDictionary *)properties withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Reset single user attribute.
							 | 
						||
| 
								 | 
							
								 @param propertyName user properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)userUnset:(NSString *)propertyName withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Reset user properties.
							 | 
						||
| 
								 | 
							
								 @param propertyNames user properties
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								+ (void)userUnsets:(NSArray<NSString *> *)propertyNames withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Adds the numeric type user attributes.
							 | 
						||
| 
								 | 
							
								 @param properties user properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)userAdd:(NSDictionary *)properties withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Adds the numeric type user attribute.
							 | 
						||
| 
								 | 
							
								 @param propertyName  propertyName
							 | 
						||
| 
								 | 
							
								 @param propertyValue propertyValue
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)userAddWithName:(NSString *)propertyName andValue:(NSNumber *)propertyValue withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Appends an element to a property of an array type.
							 | 
						||
| 
								 | 
							
								 @param properties user properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)userAppend:(NSDictionary<NSString *, NSArray *> *)properties withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Appends an element to a property of an array type. It filters out elements that already exist.
							 | 
						||
| 
								 | 
							
								 @param properties user properties
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								+ (void)userUniqAppend:(NSDictionary<NSString *, NSArray *> *)properties withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Delete the user attributes. This operation is not reversible and should be performed with caution.
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)userDeleteWithAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//MARK: super property & preset property
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Set the public event attribute, which will be included in every event uploaded after that. The public event properties are saved without setting them each time.
							 | 
						||
| 
								 | 
							
								 @param properties super properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)setSuperProperties:(NSDictionary *)properties withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Clears a public event attribute.
							 | 
						||
| 
								 | 
							
								 @param property property name
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)unsetSuperProperty:(NSString *)property withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Clear all public event attributes.
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)clearSuperPropertiesWithAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Get the public event properties that have been set.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 @return super properties that have been set.
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (NSDictionary *)getSuperPropertiesWithAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Set dynamic public properties. Each event uploaded after that will contain a public event attribute.
							 | 
						||
| 
								 | 
							
								 @param propertiesHandler  propertiesHandler.
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)setDynamicSuperProperties:(NSDictionary<NSString *, id> *(^)(void))propertiesHandler withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Get the SDK's preset properties.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 @return preset property object
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (TDPresetProperties *)getPresetPropertiesWithAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//MARK: error callback
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Register TD error callback
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 @param errorCallback code = 10001, ext = "string or json string", errorMsg = "error"
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)registerErrorCallback:(void(^)(NSInteger code, NSString * _Nullable errorMsg, NSString * _Nullable ext))errorCallback withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//MARK: custom property
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Set the distinct ID to replace the default UUID distinct ID.
							 | 
						||
| 
								 | 
							
								 @param distinctId distinctId
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)setDistinctId:(NSString *)distinctId withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Get distinct ID: The #distinct_id value in the reported data.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 @return distinctId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (NSString *)getDistinctIdWithAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Set the account ID. Each setting overrides the previous value. Login events will not be uploaded.
							 | 
						||
| 
								 | 
							
								 @param accountId accountId
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)login:(NSString *)accountId withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Get account ID: The #account_id value in the reported data.
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 @return accountId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (NSString *)getAccountIdWithAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Clearing the account ID will not upload user logout events.
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)logoutWithAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Set the network conditions for uploading. By default, the SDK will set the network conditions as 3G, 4G and Wifi to upload data
							 | 
						||
| 
								 | 
							
								 @param type network type
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)setUploadingNetworkType:(TDReportingNetworkType)type withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/// Format the time output in the format of SDK
							 | 
						||
| 
								 | 
							
								/// @param date date
							 | 
						||
| 
								 | 
							
								/// @param appId appId
							 | 
						||
| 
								 | 
							
								/// @return date string
							 | 
						||
| 
								 | 
							
								+ (NSString *)timeStringWithDate:(NSDate *)date withAppId:(NSString * _Nullable)appId;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if TARGET_OS_IOS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Enable Auto-Tracking
							 | 
						||
| 
								 | 
							
								 @param eventType Auto-Tracking type
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)enableAutoTrack:(TDAutoTrackEventType)eventType withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos);
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Enable auto tracking with super properties.
							 | 
						||
| 
								 | 
							
								 @param eventType  Auto-Tracking type
							 | 
						||
| 
								 | 
							
								 @param properties super properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)enableAutoTrack:(TDAutoTrackEventType)eventType properties:(NSDictionary * _Nullable)properties withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Enable the auto tracking function.
							 | 
						||
| 
								 | 
							
								 @param eventType  Auto-Tracking type
							 | 
						||
| 
								 | 
							
								 @param callback In the callback, eventType indicates the type of automatic collection, properties indicates the event properties before storage, and this block can return a dictionary for adding new properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)enableAutoTrack:(TDAutoTrackEventType)eventType callback:(NSDictionary *(^_Nullable)(TDAutoTrackEventType eventType, NSDictionary *properties))callback withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Set and Update the value of a custom property for Auto-Tracking
							 | 
						||
| 
								 | 
							
								 @param eventType  A list of TDAutoTrackEventType, indicating the types of automatic collection events that need to be enabled
							 | 
						||
| 
								 | 
							
								 @param properties properties
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)setAutoTrackProperties:(TDAutoTrackEventType)eventType properties:(NSDictionary * _Nullable)properties withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Ignore the Auto-Tracking of a UIViewController
							 | 
						||
| 
								 | 
							
								 @param controllers Ignore the name of the UIViewController
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)ignoreAutoTrackViewControllers:(NSArray<NSString *> *)controllers withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Ignore the Auto-Tracking  of click UIView
							 | 
						||
| 
								 | 
							
								 @param aClass ignored UIView  Class
							 | 
						||
| 
								 | 
							
								 @param appId appId
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)ignoreViewType:(Class)aClass withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 Dynamic super properties in  auto track  environment
							 | 
						||
| 
								 | 
							
								 Set dynamic public properties for auto track event
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (void)setAutoTrackDynamicProperties:(NSDictionary<NSString *, id> *(^)(void))dynamicSuperProperties withAppId:(NSString * _Nullable)appId API_UNAVAILABLE(macos);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NS_ASSUME_NONNULL_END
							 |