Classes
The following classes are available globally.
-
See moreCLUReportComposer
is a class responsible for composing final Clue report from many pieces/modules. This class initialize all recordable and info modules and actually start recording.CLUReportComposer
also callingaddNewFrameWithTimestamp:
method fromCLURecordableModule
protocol for every recordable module andrecordInfoData
method fromCLUInfoModule
protocol for every info module.Declaration
Objective-C
@interface CLUReportComposer : NSObject
Swift
class CLUReportComposer : NSObject
-
CLUOptions
is a data model class to store all configurational variables during Clue framework setup and enable process. For now onlyemail
property is available. If you need more configurational property which could be used during first setup - just subclass this classUsed in
See moreClueController
configuration @code [[ClueController sharedInstance] enableWithOptions:]; Declaration
Objective-C
@interface CLUOptions : NSObject
Swift
class CLUOptions : NSObject
-
@brief
CLUTouch
is a proxy for UITouch data and properties dictionary generator for this data.@discussion
CLUTouch
is a data model to store UITouch’s data in appropriate way. Since the system reuse UITouch object with each user interaction we can’t just store in in out collection in order to generate their properties data dictionary (via UITouch category) and add this data to final report file. Instead we have to transfer UITouch values to our custom classCLUTouch
and interaction with it.Used in
See moreCLUGeneralGestureRecognizer
in order to transfer UITouch to CLUTouch. AlsoCLUInteractionObserverDelegate
protocol requires CLUTouch instead of UITouchDeclaration
Objective-C
@interface CLUTouch : NSObject
Swift
class CLUTouch : NSObject
-
CLUDeviceInfoModule
is a info module (with static, one-time informations) for current devices’ information recording on start.Declaration
Objective-C
@interface CLUDeviceInfoModule : NSObject <CLUInfoModule>
Swift
class CLUDeviceInfoModule : NSObject
-
See moreCLUExceptionInfoModule
is a info module (with static, one-time informations) for unexpected exception recording if occurred.Declaration
Objective-C
@interface CLUExceptionInfoModule : NSObject <CLUInfoModule>
Swift
class CLUExceptionInfoModule : NSObject
-
CLUNetworkModule
is a subclass ofCLUObserveModule
for network operations recording (like responses, requests and errors) for any specific time. It will listen for all network operations via customNSURLProtocol
subclass (seeCLUURLProtocol
) andCLUURLProtocol
will send them toCLUNetworkObserverDelegate
methods soCLUNetworkModule
can add this data to buffer with specific timestampDeclaration
Objective-C
@interface CLUNetworkModule : CLUObserveModule <CLUNetworkObserverDelegate>
Swift
class CLUNetworkModule : CLUObserveModule
-
See moreCLUObserveModule
is a base class for all modules which needs to observe their data (exceptCLUVideoModule
module) and record them only if new data has arrived (likeCLUNetworkModule
orCLUUserInteractionModule
modules) or something changed with next frame iteration (likeCLUViewStructureModule
module). This class is responsible for thread safety of new data writing via Writers and Data buffer management.Declaration
Objective-C
@interface CLUObserveModule : NSObject <CLURecordableModule>
Swift
class CLUObserveModule : NSObject
-
CLUUserInteractionModule
is a subclass ofCLUObserveModule
for user interactions recording (like touches) for any specific time. It will listen for all gestures/touches via custom gesture recognizer and recognizer will send them toCLUInteractionObserverDelegate
methods soCLUUserInteractionModule
can add this data to buffer with specific timestampDeclaration
Objective-C
@interface CLUUserInteractionModule : CLUObserveModule <CLUInteractionObserverDelegate>
Swift
class CLUUserInteractionModule : CLUObserveModule
-
See moreCLUVideoModule
is a class (module) for screen recording which implementsCLURecordableModule
protocol. It’s responsible for thread safety while video recording, operations withCVPixelBufferRef
and current view hierarchy drawing (see[UIView drawViewHierarchyInRect:afterScreenUpdates:]
) and frames overlapping while recording.Declaration
Objective-C
@interface CLUVideoModule : NSObject <CLURecordableModule>
Swift
class CLUVideoModule : NSObject
-
CLUViewStructureModule
is a subclass ofCLUObserveModule
for view hierarchy recording for any specific time. It will record all views currently present on the top view controller (properties of those views and their subviews as well). AlsoCLUViewStructureModule
keep track of last recorded view structure so it won’t record same view structure twice.Declaration
Objective-C
@interface CLUViewStructureModule : CLUObserveModule
Swift
class CLUViewStructureModule : CLUObserveModule
-
CLUMailDelegate
is delegate class to handle responses/events from mail composer modal view. For report mail sending. If mail sending was successful - remove old report .clue file and report .zip fileDeclaration
Objective-C
@interface CLUMailDelegate : NSObject <MFMailComposeViewControllerDelegate>
Swift
class CLUMailDelegate : NSObject, MFMailComposeViewControllerDelegate
-
See moreCLUMailHelper
is class responsible for mail sending process. Set mail subject, add .clue report zip file in attachment and show mail compose modal view for specific viewControllerDeclaration
Objective-C
@interface CLUMailHelper : NSObject
Swift
class CLUMailHelper : NSObject
-
See moreCLURecordIndicatorViewManager
is a class which showCLURecordIndicatorView
view object for specific amount of time, hide it and switch modes ofCLURecordIndicatorView
. Also return useful view related information like current top view controller in stack.Declaration
Objective-C
@interface CLURecordIndicatorViewManager : NSObject
Swift
class CLURecordIndicatorViewManager : NSObject
-
CLUReportFileManager
is a singleton class responsible for managing final report .clue file and interact which it on file system level.clue file is a package consists of two subdirectories
See moreInfo
andModules
Info
directory contains all static modules like: info_device.json (with statis device information)Modules
directory contains all real-time, recordable modules like: module_interaction.json (with all user touches), module_network.json (with all network communications), module_view.json (with all view mutation), module_video.mp4 (with screen cast).Declaration
Objective-C
@interface CLUReportFileManager : NSObject
Swift
class CLUReportFileManager : NSObject
-
See moreCLUGeneralGestureRecognizer
is a subclass ofUIGestureRecognizer
to intercept all user gestures and interactions during report recording and redirect them to appropriate delegate method fromCLUInteractionObserverDelegate
Declaration
Objective-C
@interface CLUGeneralGestureRecognizer : UIGestureRecognizer
Swift
class CLUGeneralGestureRecognizer : UIGestureRecognizer
-
CLUURLProtocol
is a subclass of abstractNSURLProtocol
to intercept all network requests during report recording and redirect them to appropriate delegate method fromCLUNetworkObserverDelegate
usingCLUURLProtocolConfiguration
singleton classDeclaration
Objective-C
@interface CLUURLProtocol : NSURLProtocol <NSURLSessionDelegate, NSURLSessionTaskDelegate, NSURLSessionDataDelegate>
Swift
class CLUURLProtocol : URLProtocol, URLSessionDelegate, URLSessionTaskDelegate, URLSessionDataDelegate
-
See moreCLUURLProtocolConfiguration
is a singleton class which keeps custom network configuration (likeCLUNetworkObserverDelegate
delegate) Used for additional configuration ofCLUURLProtocol
which intercepting all network communication.Declaration
Objective-C
@interface CLUURLProtocolConfiguration : NSObject
Swift
class CLUURLProtocolConfiguration : NSObject
-
See moreCLURecordIndicatorView
is a view object to indicate recording process to user, will appear at the top of the screen, right after statusBarDeclaration
Objective-C
@interface CLURecordIndicatorView : UIView
Swift
class CLURecordIndicatorView : UIView
-
See moreCLUDataWriter
class which responsible for all writing and saving process for regular data stream into final .json file (inside .clue report file) Used with all Recordable Modules (like View Structure, Network and User Interactions) to add data while report recording is activeDeclaration
Objective-C
@interface CLUDataWriter : NSObject <CLUWritable, NSStreamDelegate>
Swift
class CLUDataWriter : NSObject
-
See moreCLUVideoWriter
class which responsible for all writing and saving process for video stream from device’s screen. Used with Video Module to record screen while report recording is activeDeclaration
Objective-C
@interface CLUVideoWriter : NSObject <CLUWritable>
Swift
class CLUVideoWriter : NSObject
-
See moreClueController
is a singleton class and main Clue controller which is also the only public interface for framework user. Here user can turn on/off Clue and start/stop report recording.Declaration
Objective-C
@interface ClueController : NSObject
Swift
class ClueController : NSObject