@rejourneyco/react-native 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle.kts +135 -0
- package/android/consumer-rules.pro +10 -0
- package/android/proguard-rules.pro +1 -0
- package/android/src/main/AndroidManifest.xml +15 -0
- package/android/src/main/java/com/rejourney/RejourneyModuleImpl.kt +2981 -0
- package/android/src/main/java/com/rejourney/capture/ANRHandler.kt +206 -0
- package/android/src/main/java/com/rejourney/capture/ActivityTracker.kt +98 -0
- package/android/src/main/java/com/rejourney/capture/CaptureEngine.kt +1553 -0
- package/android/src/main/java/com/rejourney/capture/CaptureHeuristics.kt +375 -0
- package/android/src/main/java/com/rejourney/capture/CrashHandler.kt +153 -0
- package/android/src/main/java/com/rejourney/capture/MotionEvent.kt +215 -0
- package/android/src/main/java/com/rejourney/capture/SegmentUploader.kt +512 -0
- package/android/src/main/java/com/rejourney/capture/VideoEncoder.kt +773 -0
- package/android/src/main/java/com/rejourney/capture/ViewHierarchyScanner.kt +633 -0
- package/android/src/main/java/com/rejourney/capture/ViewSerializer.kt +286 -0
- package/android/src/main/java/com/rejourney/core/Constants.kt +117 -0
- package/android/src/main/java/com/rejourney/core/Logger.kt +93 -0
- package/android/src/main/java/com/rejourney/core/Types.kt +124 -0
- package/android/src/main/java/com/rejourney/lifecycle/SessionLifecycleService.kt +162 -0
- package/android/src/main/java/com/rejourney/network/DeviceAuthManager.kt +747 -0
- package/android/src/main/java/com/rejourney/network/HttpClientProvider.kt +16 -0
- package/android/src/main/java/com/rejourney/network/NetworkMonitor.kt +272 -0
- package/android/src/main/java/com/rejourney/network/UploadManager.kt +1363 -0
- package/android/src/main/java/com/rejourney/network/UploadWorker.kt +492 -0
- package/android/src/main/java/com/rejourney/privacy/PrivacyMask.kt +645 -0
- package/android/src/main/java/com/rejourney/touch/GestureClassifier.kt +233 -0
- package/android/src/main/java/com/rejourney/touch/KeyboardTracker.kt +158 -0
- package/android/src/main/java/com/rejourney/touch/TextInputTracker.kt +181 -0
- package/android/src/main/java/com/rejourney/touch/TouchInterceptor.kt +591 -0
- package/android/src/main/java/com/rejourney/utils/EventBuffer.kt +284 -0
- package/android/src/main/java/com/rejourney/utils/OEMDetector.kt +154 -0
- package/android/src/main/java/com/rejourney/utils/PerfTiming.kt +235 -0
- package/android/src/main/java/com/rejourney/utils/Telemetry.kt +297 -0
- package/android/src/main/java/com/rejourney/utils/WindowUtils.kt +84 -0
- package/android/src/newarch/java/com/rejourney/RejourneyModule.kt +187 -0
- package/android/src/newarch/java/com/rejourney/RejourneyPackage.kt +40 -0
- package/android/src/oldarch/java/com/rejourney/RejourneyModule.kt +218 -0
- package/android/src/oldarch/java/com/rejourney/RejourneyPackage.kt +23 -0
- package/ios/Capture/RJANRHandler.h +42 -0
- package/ios/Capture/RJANRHandler.m +328 -0
- package/ios/Capture/RJCaptureEngine.h +275 -0
- package/ios/Capture/RJCaptureEngine.m +2062 -0
- package/ios/Capture/RJCaptureHeuristics.h +80 -0
- package/ios/Capture/RJCaptureHeuristics.m +903 -0
- package/ios/Capture/RJCrashHandler.h +46 -0
- package/ios/Capture/RJCrashHandler.m +313 -0
- package/ios/Capture/RJMotionEvent.h +183 -0
- package/ios/Capture/RJMotionEvent.m +183 -0
- package/ios/Capture/RJPerformanceManager.h +100 -0
- package/ios/Capture/RJPerformanceManager.m +373 -0
- package/ios/Capture/RJPixelBufferDownscaler.h +42 -0
- package/ios/Capture/RJPixelBufferDownscaler.m +85 -0
- package/ios/Capture/RJSegmentUploader.h +146 -0
- package/ios/Capture/RJSegmentUploader.m +778 -0
- package/ios/Capture/RJVideoEncoder.h +247 -0
- package/ios/Capture/RJVideoEncoder.m +1036 -0
- package/ios/Capture/RJViewControllerTracker.h +73 -0
- package/ios/Capture/RJViewControllerTracker.m +508 -0
- package/ios/Capture/RJViewHierarchyScanner.h +215 -0
- package/ios/Capture/RJViewHierarchyScanner.m +1464 -0
- package/ios/Capture/RJViewSerializer.h +119 -0
- package/ios/Capture/RJViewSerializer.m +498 -0
- package/ios/Core/RJConstants.h +124 -0
- package/ios/Core/RJConstants.m +88 -0
- package/ios/Core/RJLifecycleManager.h +85 -0
- package/ios/Core/RJLifecycleManager.m +308 -0
- package/ios/Core/RJLogger.h +61 -0
- package/ios/Core/RJLogger.m +211 -0
- package/ios/Core/RJTypes.h +176 -0
- package/ios/Core/RJTypes.m +66 -0
- package/ios/Core/Rejourney.h +64 -0
- package/ios/Core/Rejourney.mm +2495 -0
- package/ios/Network/RJDeviceAuthManager.h +94 -0
- package/ios/Network/RJDeviceAuthManager.m +967 -0
- package/ios/Network/RJNetworkMonitor.h +68 -0
- package/ios/Network/RJNetworkMonitor.m +267 -0
- package/ios/Network/RJRetryManager.h +73 -0
- package/ios/Network/RJRetryManager.m +325 -0
- package/ios/Network/RJUploadManager.h +267 -0
- package/ios/Network/RJUploadManager.m +2296 -0
- package/ios/Privacy/RJPrivacyMask.h +163 -0
- package/ios/Privacy/RJPrivacyMask.m +922 -0
- package/ios/Rejourney.h +63 -0
- package/ios/Touch/RJGestureClassifier.h +130 -0
- package/ios/Touch/RJGestureClassifier.m +333 -0
- package/ios/Touch/RJTouchInterceptor.h +169 -0
- package/ios/Touch/RJTouchInterceptor.m +772 -0
- package/ios/Utils/RJEventBuffer.h +112 -0
- package/ios/Utils/RJEventBuffer.m +358 -0
- package/ios/Utils/RJGzipUtils.h +33 -0
- package/ios/Utils/RJGzipUtils.m +89 -0
- package/ios/Utils/RJKeychainManager.h +48 -0
- package/ios/Utils/RJKeychainManager.m +111 -0
- package/ios/Utils/RJPerfTiming.h +209 -0
- package/ios/Utils/RJPerfTiming.m +264 -0
- package/ios/Utils/RJTelemetry.h +92 -0
- package/ios/Utils/RJTelemetry.m +320 -0
- package/ios/Utils/RJWindowUtils.h +66 -0
- package/ios/Utils/RJWindowUtils.m +133 -0
- package/lib/commonjs/NativeRejourney.js +40 -0
- package/lib/commonjs/components/Mask.js +79 -0
- package/lib/commonjs/index.js +1381 -0
- package/lib/commonjs/sdk/autoTracking.js +1259 -0
- package/lib/commonjs/sdk/constants.js +151 -0
- package/lib/commonjs/sdk/errorTracking.js +199 -0
- package/lib/commonjs/sdk/index.js +50 -0
- package/lib/commonjs/sdk/metricsTracking.js +204 -0
- package/lib/commonjs/sdk/navigation.js +151 -0
- package/lib/commonjs/sdk/networkInterceptor.js +412 -0
- package/lib/commonjs/sdk/utils.js +363 -0
- package/lib/commonjs/types/expo-router.d.js +2 -0
- package/lib/commonjs/types/index.js +2 -0
- package/lib/module/NativeRejourney.js +38 -0
- package/lib/module/components/Mask.js +72 -0
- package/lib/module/index.js +1284 -0
- package/lib/module/sdk/autoTracking.js +1233 -0
- package/lib/module/sdk/constants.js +145 -0
- package/lib/module/sdk/errorTracking.js +189 -0
- package/lib/module/sdk/index.js +12 -0
- package/lib/module/sdk/metricsTracking.js +187 -0
- package/lib/module/sdk/navigation.js +143 -0
- package/lib/module/sdk/networkInterceptor.js +401 -0
- package/lib/module/sdk/utils.js +342 -0
- package/lib/module/types/expo-router.d.js +2 -0
- package/lib/module/types/index.js +2 -0
- package/lib/typescript/NativeRejourney.d.ts +147 -0
- package/lib/typescript/components/Mask.d.ts +39 -0
- package/lib/typescript/index.d.ts +117 -0
- package/lib/typescript/sdk/autoTracking.d.ts +204 -0
- package/lib/typescript/sdk/constants.d.ts +120 -0
- package/lib/typescript/sdk/errorTracking.d.ts +32 -0
- package/lib/typescript/sdk/index.d.ts +9 -0
- package/lib/typescript/sdk/metricsTracking.d.ts +58 -0
- package/lib/typescript/sdk/navigation.d.ts +33 -0
- package/lib/typescript/sdk/networkInterceptor.d.ts +47 -0
- package/lib/typescript/sdk/utils.d.ts +148 -0
- package/lib/typescript/types/index.d.ts +624 -0
- package/package.json +102 -0
- package/rejourney.podspec +21 -0
- package/src/NativeRejourney.ts +165 -0
- package/src/components/Mask.tsx +80 -0
- package/src/index.ts +1459 -0
- package/src/sdk/autoTracking.ts +1373 -0
- package/src/sdk/constants.ts +134 -0
- package/src/sdk/errorTracking.ts +231 -0
- package/src/sdk/index.ts +11 -0
- package/src/sdk/metricsTracking.ts +232 -0
- package/src/sdk/navigation.ts +157 -0
- package/src/sdk/networkInterceptor.ts +440 -0
- package/src/sdk/utils.ts +369 -0
- package/src/types/expo-router.d.ts +7 -0
- package/src/types/index.ts +739 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RJCaptureEngine.h
|
|
3
|
+
// Rejourney
|
|
4
|
+
//
|
|
5
|
+
// Video capture orchestrator with H.264 encoding.
|
|
6
|
+
//
|
|
7
|
+
// The capture engine is responsible for:
|
|
8
|
+
// - Fixed 1 FPS video segment capture with H.264 encoding
|
|
9
|
+
// - View hierarchy serialization for debugging and privacy
|
|
10
|
+
// - Adapting to system conditions (memory, thermal, battery)
|
|
11
|
+
// - Uploading video segments via presigned URLs
|
|
12
|
+
//
|
|
13
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
14
|
+
// you may not use this file except in compliance with the License.
|
|
15
|
+
// You may obtain a copy of the License at
|
|
16
|
+
//
|
|
17
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
18
|
+
//
|
|
19
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
20
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
21
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
22
|
+
// See the License for the specific language governing permissions and
|
|
23
|
+
// limitations under the License.
|
|
24
|
+
//
|
|
25
|
+
// Copyright (c) 2026 Rejourney
|
|
26
|
+
//
|
|
27
|
+
|
|
28
|
+
#import "../Core/RJTypes.h"
|
|
29
|
+
#import <Foundation/Foundation.h>
|
|
30
|
+
#import <UIKit/UIKit.h>
|
|
31
|
+
|
|
32
|
+
@class RJVideoEncoder;
|
|
33
|
+
@class RJViewSerializer;
|
|
34
|
+
@class RJSegmentUploader;
|
|
35
|
+
@class RJPrivacyMask;
|
|
36
|
+
|
|
37
|
+
@protocol RJVideoEncoderDelegate;
|
|
38
|
+
|
|
39
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Block type for providing the key window.
|
|
43
|
+
* The engine uses this to avoid direct UIKit coupling.
|
|
44
|
+
*/
|
|
45
|
+
typedef UIWindow *_Nullable (^RJWindowProvider)(void);
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Video capture orchestrator with H.264 segment encoding.
|
|
49
|
+
*
|
|
50
|
+
* Captures screenshots at 1 FPS, encodes them as H.264 video
|
|
51
|
+
* segments, and uploads via presigned URLs. Also captures view hierarchy JSON
|
|
52
|
+
* for debugging and element identification.
|
|
53
|
+
*
|
|
54
|
+
* ## Features
|
|
55
|
+
* - H.264 video segment encoding (60 second segments)
|
|
56
|
+
* - View hierarchy serialization for breadcrumb overlays
|
|
57
|
+
* - Privacy masking for sensitive content
|
|
58
|
+
* - Memory-aware capture (respects system memory pressure)
|
|
59
|
+
* - Thermal throttling (reduces to 0.5 FPS when hot)
|
|
60
|
+
* - Battery-aware capture scheduling
|
|
61
|
+
* - Adaptive scale reduction under load
|
|
62
|
+
*
|
|
63
|
+
* ## Usage
|
|
64
|
+
* ```objc
|
|
65
|
+
* RJCaptureEngine *engine = [[RJCaptureEngine alloc] initWithWindowProvider:^{
|
|
66
|
+
* return [self getKeyWindow];
|
|
67
|
+
* }];
|
|
68
|
+
*
|
|
69
|
+
* // Configure uploader before starting session
|
|
70
|
+
* [engine configureSegmentUploaderWithBaseURL:@"https://ingest.rejourney.io"
|
|
71
|
+
* apiKey:@"rj_..."
|
|
72
|
+
* projectId:@"proj_..."];
|
|
73
|
+
*
|
|
74
|
+
* [engine startSessionWithId:@"session_123"];
|
|
75
|
+
* // ... later ...
|
|
76
|
+
* [engine stopSession];
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @note This class is not thread-safe. Call all methods from the main thread.
|
|
80
|
+
*/
|
|
81
|
+
@interface RJCaptureEngine : NSObject <RJVideoEncoderDelegate>
|
|
82
|
+
|
|
83
|
+
#pragma mark - Video Capture Configuration
|
|
84
|
+
|
|
85
|
+
/// Capture scale factor as a fraction of device screen scale (0.0-1.0).
|
|
86
|
+
/// Example: on a 3x device, 0.35 -> ~1.0 px/pt. Default: 0.35
|
|
87
|
+
@property(nonatomic, assign) CGFloat captureScale;
|
|
88
|
+
|
|
89
|
+
/// Target FPS for video capture. Default: 1.
|
|
90
|
+
@property(nonatomic, assign) NSInteger videoFPS;
|
|
91
|
+
|
|
92
|
+
/// Number of frames per video segment. Default: 60 (60 seconds at 1 FPS).
|
|
93
|
+
@property(nonatomic, assign) NSInteger framesPerSegment;
|
|
94
|
+
|
|
95
|
+
/// Target video bitrate in bits per second. Default: 400000 (400 kbps).
|
|
96
|
+
@property(nonatomic, assign) NSInteger videoBitrate;
|
|
97
|
+
|
|
98
|
+
/// Capture view hierarchy every N frames. Default: 5 (every 5s at 1 FPS).
|
|
99
|
+
@property(nonatomic, assign) NSInteger hierarchyCaptureInterval;
|
|
100
|
+
|
|
101
|
+
/// Whether segment uploads are enabled. Default: YES.
|
|
102
|
+
@property(nonatomic, assign) BOOL uploadsEnabled;
|
|
103
|
+
|
|
104
|
+
#pragma mark - Adaptive Behavior
|
|
105
|
+
|
|
106
|
+
/// Whether to adjust quality based on memory pressure. Default: YES
|
|
107
|
+
@property(nonatomic, assign) BOOL adaptiveQualityEnabled;
|
|
108
|
+
|
|
109
|
+
/// Whether to reduce captures when device is hot. Default: YES
|
|
110
|
+
@property(nonatomic, assign) BOOL thermalThrottleEnabled;
|
|
111
|
+
|
|
112
|
+
/// Whether to reduce captures on low battery. Default: YES
|
|
113
|
+
@property(nonatomic, assign) BOOL batteryAwareEnabled;
|
|
114
|
+
|
|
115
|
+
#pragma mark - Privacy Configuration
|
|
116
|
+
|
|
117
|
+
/// Whether to mask text input fields during capture. Default: YES
|
|
118
|
+
@property(nonatomic, assign) BOOL privacyMaskTextInputs;
|
|
119
|
+
|
|
120
|
+
/// Whether to mask camera preview views during capture. Default: YES
|
|
121
|
+
@property(nonatomic, assign) BOOL privacyMaskCameraViews;
|
|
122
|
+
|
|
123
|
+
/// Whether to mask web views during capture. Default: YES
|
|
124
|
+
@property(nonatomic, assign) BOOL privacyMaskWebViews;
|
|
125
|
+
|
|
126
|
+
/// Whether to mask video layers during capture. Default: YES
|
|
127
|
+
@property(nonatomic, assign) BOOL privacyMaskVideoLayers;
|
|
128
|
+
|
|
129
|
+
/// Direct access to the privacy mask for manual nativeID masking
|
|
130
|
+
@property(nonatomic, readonly) RJPrivacyMask *privacyMask;
|
|
131
|
+
|
|
132
|
+
#pragma mark - Read-only State
|
|
133
|
+
|
|
134
|
+
/// Current performance level based on system conditions
|
|
135
|
+
@property(nonatomic, readonly) RJPerformanceLevel currentPerformanceLevel;
|
|
136
|
+
|
|
137
|
+
/// Whether a capture session is currently active
|
|
138
|
+
@property(nonatomic, readonly) BOOL isRecording;
|
|
139
|
+
|
|
140
|
+
/// Whether the UI is ready for capture (e.g. splash screen hidden)
|
|
141
|
+
@property(atomic, readonly) BOOL uiReadyForCapture;
|
|
142
|
+
|
|
143
|
+
/// Current session ID
|
|
144
|
+
@property(nonatomic, readonly, nullable) NSString *sessionId;
|
|
145
|
+
|
|
146
|
+
/// Video encoder for segment capture
|
|
147
|
+
@property(nonatomic, readonly, nullable) RJVideoEncoder *videoEncoder;
|
|
148
|
+
|
|
149
|
+
/// View hierarchy serializer
|
|
150
|
+
@property(nonatomic, readonly, nullable) RJViewSerializer *viewSerializer;
|
|
151
|
+
|
|
152
|
+
/// Segment uploader
|
|
153
|
+
@property(nonatomic, readonly, nullable) RJSegmentUploader *segmentUploader;
|
|
154
|
+
|
|
155
|
+
#pragma mark - Initialization
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Creates a new capture engine with the specified window provider.
|
|
159
|
+
*
|
|
160
|
+
* @param windowProvider Block that returns the key window for capture.
|
|
161
|
+
* Called on main thread during capture operations.
|
|
162
|
+
* @return A new capture engine instance.
|
|
163
|
+
*/
|
|
164
|
+
- (instancetype)initWithWindowProvider:(RJWindowProvider)windowProvider;
|
|
165
|
+
|
|
166
|
+
/// Unavailable. Use initWithWindowProvider: instead.
|
|
167
|
+
- (instancetype)init NS_UNAVAILABLE;
|
|
168
|
+
|
|
169
|
+
#pragma mark - Configuration
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Configures the segment uploader for video capture.
|
|
173
|
+
* Call this BEFORE starting a session.
|
|
174
|
+
*
|
|
175
|
+
* @param baseURL The API base URL (e.g., "https://ingest.rejourney.io")
|
|
176
|
+
* @param apiKey The public API key (e.g., "rj_...")
|
|
177
|
+
* @param projectId The project identifier
|
|
178
|
+
*/
|
|
179
|
+
- (void)configureSegmentUploaderWithBaseURL:(NSString *)baseURL
|
|
180
|
+
apiKey:(NSString *)apiKey
|
|
181
|
+
projectId:(NSString *)projectId;
|
|
182
|
+
|
|
183
|
+
#pragma mark - Session Lifecycle
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Starts a new video capture session.
|
|
187
|
+
*
|
|
188
|
+
* @param sessionId Unique identifier for the session.
|
|
189
|
+
*/
|
|
190
|
+
- (void)startSessionWithId:(NSString *)sessionId;
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Stops the current capture session.
|
|
194
|
+
* Finishes any pending video segment and uploads it.
|
|
195
|
+
*/
|
|
196
|
+
- (void)stopSession;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Stops the current capture session SYNCHRONOUSLY.
|
|
200
|
+
* Use during app termination when async completion may not fire.
|
|
201
|
+
* Blocks until segment is finished and upload is initiated.
|
|
202
|
+
*/
|
|
203
|
+
- (void)stopSessionSync;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Waits for pending segment uploads to finish (best-effort).
|
|
207
|
+
* Use during termination to avoid missing video on session end.
|
|
208
|
+
*/
|
|
209
|
+
- (void)waitForPendingSegmentUploadsWithTimeout:(NSTimeInterval)timeout;
|
|
210
|
+
|
|
211
|
+
#pragma mark - App Lifecycle Events
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Pauses video capture and finishes the current segment.
|
|
215
|
+
* Call when app enters background to ensure the segment is uploaded.
|
|
216
|
+
*/
|
|
217
|
+
- (void)pauseVideoCapture;
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Pauses video capture SYNCHRONOUSLY.
|
|
221
|
+
* Use during app termination/background when async completion may not fire.
|
|
222
|
+
* Blocks until segment is written and upload is initiated.
|
|
223
|
+
* Has a timeout to prevent app freeze.
|
|
224
|
+
*/
|
|
225
|
+
- (void)pauseVideoCaptureSync;
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Resumes video capture after a pause.
|
|
229
|
+
* Starts a new segment from the current screen state.
|
|
230
|
+
*/
|
|
231
|
+
- (void)resumeVideoCapture;
|
|
232
|
+
|
|
233
|
+
#pragma mark - Event Notifications (Optional - for enhanced metadata)
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Notifies the engine of a navigation event.
|
|
237
|
+
* This is optional - video capture continues regardless.
|
|
238
|
+
* Useful for attaching screen names to hierarchy snapshots.
|
|
239
|
+
*
|
|
240
|
+
* @param screenName Name of the screen being navigated to.
|
|
241
|
+
*/
|
|
242
|
+
- (void)notifyNavigationToScreen:(NSString *)screenName;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Notifies the engine of a gesture event.
|
|
246
|
+
* This is optional - video captures gestures visually.
|
|
247
|
+
* Useful for logging touch events alongside video.
|
|
248
|
+
*
|
|
249
|
+
* @param gestureType The type of gesture (e.g., "tap", "swipe_left").
|
|
250
|
+
*/
|
|
251
|
+
- (void)notifyGesture:(NSString *)gestureType;
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Notifies the engine of a React Native commit/mount boundary.
|
|
255
|
+
* This is optional and can be called from RN render pipeline hooks.
|
|
256
|
+
*/
|
|
257
|
+
- (void)notifyReactNativeCommit;
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Notifies the engine that the UI is ready for capture.
|
|
261
|
+
* Call this after splash screen is hidden and initial layout is complete.
|
|
262
|
+
*/
|
|
263
|
+
- (void)notifyUIReady;
|
|
264
|
+
|
|
265
|
+
#pragma mark - Memory Management
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Handles a memory warning by reducing quality temporarily.
|
|
269
|
+
* Called automatically on UIApplicationDidReceiveMemoryWarningNotification.
|
|
270
|
+
*/
|
|
271
|
+
- (void)handleMemoryWarning;
|
|
272
|
+
|
|
273
|
+
@end
|
|
274
|
+
|
|
275
|
+
NS_ASSUME_NONNULL_END
|