react-native-ux-cam 5.4.16 → 6.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/CHANGELOG.md +1 -0
- package/RNUxcam.podspec +21 -2
- package/android/build.gradle +38 -4
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/android/gradlew +240 -0
- package/android/gradlew.bat +91 -0
- package/android/src/main/java/com/uxcam/RNUxViewFinder.java +7 -0
- package/android/src/main/java/com/uxcam/RNUxcamModuleImpl.java +446 -0
- package/android/src/main/java/com/uxcam/RNUxcamPackage.java +33 -18
- package/android/src/newarch/java/com/uxcam/RNUxcamModule.java +208 -0
- package/android/src/oldarch/java/com/uxcam/RNUxcamModule.java +205 -0
- package/ios/RNUxcam/RNUxcam.h +16 -0
- package/ios/RNUxcam/RNUxcam.mm +526 -0
- package/package.json +36 -32
- package/src/NativeRNUxcam.ts +60 -0
- package/src/UXCam.js +343 -0
- package/src/UXCamOcclusion.tsx +29 -0
- package/{index.d.ts → src/index.d.ts} +9 -130
- package/src/index.js +3 -0
- package/src/types.ts +19 -0
- package/UXCam.js +0 -570
- package/UXCamOcclusion.tsx +0 -36
- package/android/.classpath +0 -6
- package/android/src/main/java/com/uxcam/RNUxcamModule.java +0 -559
- package/index.js +0 -3
- package/ios/RNUxcam.h +0 -19
- package/ios/RNUxcam.m +0 -670
- package/ios/RNUxcam.xcodeproj/project.pbxproj +0 -266
- package/ios/RNUxcam.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/ios/RNUxcam.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- /package/{jest.config.js → src/jest.config.js} +0 -0
- /package/{tsconfig.json → src/tsconfig.json} +0 -0
package/src/UXCam.js
ADDED
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
import { Platform, NativeModules, findNodeHandle, NativeEventEmitter } from 'react-native'
|
|
2
|
+
|
|
3
|
+
const isTurboModuleEnabled = global.__turboModuleProxy != null;
|
|
4
|
+
const UXCamBridge = isTurboModuleEnabled ? require("./NativeRNUxcam").default : NativeModules.RNUxcam;
|
|
5
|
+
|
|
6
|
+
const RNUxcam_VerifyEvent_Name = 'UXCam_Verification_Event';
|
|
7
|
+
|
|
8
|
+
// Capture the platform we are running on
|
|
9
|
+
const platform = Platform.OS;
|
|
10
|
+
const platformIOS = platform === "ios" ? true : false;
|
|
11
|
+
const platformAndroid = platform === "android" ? true : false;
|
|
12
|
+
|
|
13
|
+
export default class UXCam {
|
|
14
|
+
|
|
15
|
+
static startWithConfiguration(configuration) {
|
|
16
|
+
UXCamBridge.startWithConfiguration(configuration);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static startWithKey(userAppKey) {
|
|
20
|
+
const configuration = { "userAppKey": userAppKey };
|
|
21
|
+
UXCam.startWithConfiguration(configuration);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
static applyOcclusion(occlusion) {
|
|
25
|
+
UXCamBridge.applyOcclusion(occlusion);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static removeOcclusion(occlusion) {
|
|
29
|
+
UXCamBridge.removeOcclusion(occlusion);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static addVerificationListener(status) {
|
|
33
|
+
const emitter = new NativeEventEmitter(UXCamBridge);
|
|
34
|
+
return emitter.addListener(RNUxcam_VerifyEvent_Name, status)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* This will opt this device into session recordings
|
|
39
|
+
* - any current session will be stopped and a new session will be started with the last settings passed to `startWithKey`
|
|
40
|
+
*/
|
|
41
|
+
static optInOverall() {
|
|
42
|
+
UXCamBridge.optInOverall();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* This will cancel any current session recording and opt this device out of future session recordings until `optInOverall` is called
|
|
47
|
+
* @note The default is to opt-in to session recordings, but not to screen recordings, and the defaults will be reset if the user un-installs and re-installs the app
|
|
48
|
+
*/
|
|
49
|
+
static optOutOverall() {
|
|
50
|
+
UXCamBridge.optOutOverall();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* This will opt this device back into session recordings
|
|
55
|
+
*/
|
|
56
|
+
static optIntoSchematicRecordings() {
|
|
57
|
+
if (platformIOS) {
|
|
58
|
+
UXCamBridge.optIntoSchematicRecordings();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* This will opt this device out of schematic recordings for future sessions
|
|
64
|
+
* - any current session will be stopped and restarted with the last settings passed to `startWithKey`
|
|
65
|
+
*/
|
|
66
|
+
static optOutOfSchematicRecordings() {
|
|
67
|
+
if (platformIOS) {
|
|
68
|
+
UXCamBridge.optOutOfSchematicRecordings();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Returns the opt-in status of this device
|
|
74
|
+
* @return `true` if the device is opted in to session recordings, `false` otherwise. The default is `false`.
|
|
75
|
+
*/
|
|
76
|
+
static optInOverallStatus() {
|
|
77
|
+
return UXCamBridge.optInOverallStatus();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** Returns the opt-in status of this device for schematic recordings
|
|
81
|
+
* @returns `true` if the device is opted in to schematic recordings, `false` otherwise. The default is `false`.
|
|
82
|
+
* @note Use in conjunction with optInOverallStatus to control the overall recording status for the device
|
|
83
|
+
*/
|
|
84
|
+
static optInSchematicRecordingStatus() {
|
|
85
|
+
if (platformIOS) {
|
|
86
|
+
return UXCamBridge.optInSchematicRecordingStatus();
|
|
87
|
+
} else {
|
|
88
|
+
// Just return the general status for Android which doesn't currently split status between session data and video
|
|
89
|
+
return UXCamBridge.optInOverallStatus();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* @brief Android only.
|
|
95
|
+
* This will opt this device into video recording for future sessions.
|
|
96
|
+
*/
|
|
97
|
+
static optIntoVideoRecording() {
|
|
98
|
+
if (platformAndroid) {
|
|
99
|
+
UXCamBridge.optIntoVideoRecording();
|
|
100
|
+
} else if (platformIOS) {
|
|
101
|
+
UXCamBridge.optIntoSchematicRecordings();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @brief Android only.
|
|
107
|
+
* This will opt this device out of video recording for future sessions.
|
|
108
|
+
*/
|
|
109
|
+
static optOutOfVideoRecording() {
|
|
110
|
+
if (platformAndroid) {
|
|
111
|
+
UXCamBridge.optOutOfVideoRecording();
|
|
112
|
+
} else if (platformIOS) {
|
|
113
|
+
UXCamBridge.optOutOfSchematicRecordings();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @brief Android only.
|
|
119
|
+
* Returns the opt-in video status of this device
|
|
120
|
+
* @return `true` if the device is opted in for video recordings, `false` otherwise.
|
|
121
|
+
*/
|
|
122
|
+
static optInVideoRecordingStatus() {
|
|
123
|
+
if (platformAndroid) {
|
|
124
|
+
return UXCamBridge.optInVideoRecordingStatus();
|
|
125
|
+
} else if (platformIOS) {
|
|
126
|
+
return UXCamBridge.optInSchematicRecordingStatus();
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Starts a new session after the {@link #stopSessionAndUploadData()} method has been called.
|
|
133
|
+
* This happens automatically when the app returns from background.
|
|
134
|
+
*/
|
|
135
|
+
static startNewSession() {
|
|
136
|
+
UXCamBridge.startNewSession();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Stop current uxcam session and send captured data to server.<br>
|
|
141
|
+
* Use this to start sending the data on UXCam server without the app going into the background.<br>
|
|
142
|
+
* This starts an asynchronous process and returns immediately.
|
|
143
|
+
*/
|
|
144
|
+
static stopSessionAndUploadData() {
|
|
145
|
+
UXCamBridge.stopSessionAndUploadData();
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Cancels the recording of the current session and discards the data
|
|
150
|
+
*
|
|
151
|
+
* @note A new session will start as normal when the app nexts come out of the background (depending on the state of the MultiSessionRecord flag), or if you call `startNewSession`
|
|
152
|
+
*/
|
|
153
|
+
static cancelCurrentSession() {
|
|
154
|
+
UXCamBridge.cancelCurrentSession();
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Returns a URL path that shows the current session when it compeletes
|
|
159
|
+
*
|
|
160
|
+
* @note This can be used for tying in the current session with other analytics systems
|
|
161
|
+
*
|
|
162
|
+
* @return url path for current session or nil if no verified session is active
|
|
163
|
+
*/
|
|
164
|
+
static async urlForCurrentSession() {
|
|
165
|
+
return UXCamBridge.urlForCurrentSession();
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Returns a URL path for showing all the current users sessions
|
|
170
|
+
*
|
|
171
|
+
* @note This can be used for tying in the current user with other analytics systems
|
|
172
|
+
*
|
|
173
|
+
* @return url path for user session or nil if no verified session is active
|
|
174
|
+
*/
|
|
175
|
+
static async urlForCurrentUser() {
|
|
176
|
+
return UXCamBridge.urlForCurrentUser();
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @brief IOS only. Uploads sessions that were pending to be uploaded
|
|
181
|
+
*
|
|
182
|
+
* Sessions can be in the Pending state if UXCam was unable to upload them at the end of the last session. Normally they will be sent at the end of the next session.
|
|
183
|
+
*/
|
|
184
|
+
static uploadPendingSession() {
|
|
185
|
+
return UXCamBridge.uploadPendingSession();
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* @brief Returns how many sessions are waiting to be uploaded
|
|
190
|
+
*
|
|
191
|
+
* Sessions can be in the Pending state if UXCam was unable to upload them at the end of the last session. Normally they will be sent at the end of the next session.
|
|
192
|
+
*/
|
|
193
|
+
static pendingSessionCount() {
|
|
194
|
+
return UXCamBridge.pendingSessionCount();
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* @brief Deletes any sessions that are awaiting upload
|
|
199
|
+
* @note Advanced use only. This is not needed for most developers. This can't be called until UXCam startWithKey: has completed
|
|
200
|
+
*/
|
|
201
|
+
static deletePendingUploads() {
|
|
202
|
+
UXCamBridge.deletePendingUploads();
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* By default UXCam will end a session immediately when your app goes into the background. But if you are switching over to another app for authorisation, or some other short action, and want the session to continue when the user comes back to your app then call this method with a value of `true` before switching away to the other app.
|
|
207
|
+
* UXCam will pause the current session as your app goes into the background and then continue the session when your app resumes. If your app doesn't resume within a couple of minutes the original session will be closed as normal and a new session will start when your app eventually is resumed.
|
|
208
|
+
* @param duration Set time to wait in `milliseconds` before finishing the session.
|
|
209
|
+
*/
|
|
210
|
+
static allowShortBreakForAnotherApp(duration) {
|
|
211
|
+
if (typeof duration == 'boolean') {
|
|
212
|
+
UXCamBridge.allowShortBreakForAnotherApp(duration);
|
|
213
|
+
} else if (typeof duration == 'number') {
|
|
214
|
+
UXCamBridge.allowShortBreakForAnotherAppInMillis(duration);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* @brief Resume after short break. Only used in android, does nothing on iOS
|
|
221
|
+
*/
|
|
222
|
+
static resumeShortBreakForAnotherApp() {
|
|
223
|
+
UXCamBridge.resumeShortBreakForAnotherApp();
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Returns the current recording status
|
|
228
|
+
*
|
|
229
|
+
* @return `true` if the session is being recorded
|
|
230
|
+
*/
|
|
231
|
+
static isRecording() {
|
|
232
|
+
return UXCamBridge.isRecording();
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Pause the screen recording
|
|
237
|
+
*/
|
|
238
|
+
static pauseScreenRecording() {
|
|
239
|
+
UXCamBridge.pauseScreenRecording();
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Resumes a paused session - will cancel any remaining pause time and resume screen recording
|
|
244
|
+
*/
|
|
245
|
+
static resumeScreenRecording() {
|
|
246
|
+
UXCamBridge.resumeScreenRecording();
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
UXCam normally captures the view controller name automatically but in cases where it this is not sufficient (such as in OpenGL applications)
|
|
251
|
+
or where you would like to set a different unique name, use this function to set the name.
|
|
252
|
+
|
|
253
|
+
@parameter screenName Name to apply to the current screen in the session video
|
|
254
|
+
*/
|
|
255
|
+
static tagScreenName(screenName) {
|
|
256
|
+
UXCamBridge.tagScreenName(screenName);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
Insert a general event, with associated properties, into the timeline - stores the event with the timestamp when it was added.
|
|
261
|
+
|
|
262
|
+
@parameter eventName Name of the event to attach to the session recording at the current time
|
|
263
|
+
@parameter properties An Object of properties to associate with this event
|
|
264
|
+
|
|
265
|
+
@note Only number and string property types are supported to a maximum count of 100 and maximum size per entry of 1KiB
|
|
266
|
+
*/
|
|
267
|
+
static logEvent(eventName, properties) {
|
|
268
|
+
UXCamBridge.logEvent(eventName, properties);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
UXCam uses a unique number to tag a device.
|
|
273
|
+
You can set a user identity for a device allowing you to more easily search for it on the dashboard and review their sessions further.
|
|
274
|
+
|
|
275
|
+
@parameters userIdentity String to apply to this user (device) in this recording session
|
|
276
|
+
*/
|
|
277
|
+
static setUserIdentity(userIdentity) {
|
|
278
|
+
UXCamBridge.setUserIdentity(userIdentity);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
Add a key/value property for this user
|
|
283
|
+
|
|
284
|
+
@parameter propertyName Name of the property to attach to the user
|
|
285
|
+
@parameter value A value to associate with this property
|
|
286
|
+
|
|
287
|
+
@note Only number and string value types are supported to a maximum size per entry of 1KiB
|
|
288
|
+
*/
|
|
289
|
+
static setUserProperty(propertyName, value) {
|
|
290
|
+
if (typeof value == 'number') {
|
|
291
|
+
UXCamBridge.setUserProperty(propertyName, value.toString());
|
|
292
|
+
} else if (typeof value == 'string') {
|
|
293
|
+
UXCamBridge.setUserProperty(propertyName, value);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
Add a single key/value property to this session
|
|
299
|
+
|
|
300
|
+
@parameter propertyName Name of the property to attach to the session recording
|
|
301
|
+
@parameter value A value to associate with this property
|
|
302
|
+
|
|
303
|
+
@note Only number and string value types are supported to a maximum size per entry of 1KiB
|
|
304
|
+
*/
|
|
305
|
+
static setSessionProperty(propertyName, value) {
|
|
306
|
+
if (typeof value == 'number') {
|
|
307
|
+
UXCamBridge.setSessionProperty(propertyName, value.toString());
|
|
308
|
+
} else if (typeof value == 'string') {
|
|
309
|
+
UXCamBridge.setSessionProperty(propertyName, value);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
static occludeAllTextFields(occludeAll) {
|
|
314
|
+
UXCamBridge.occludeAllTextFields(occludeAll);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
static occludeSensitiveScreen(hideScreen, hideGestures) {
|
|
318
|
+
if (typeof hideGestures !== "undefined") {
|
|
319
|
+
UXCamBridge.occludeSensitiveScreen(hideScreen, hideGestures);
|
|
320
|
+
} else {
|
|
321
|
+
UXCamBridge.occludeSensitiveScreen(hideScreen, true);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
static occludeSensitiveView(sensitiveView) {
|
|
326
|
+
if (sensitiveView) {
|
|
327
|
+
UXCamBridge.occludeSensitiveView(findNodeHandle(sensitiveView), false);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
static occludeSensitiveViewWithoutGesture(sensitiveView) {
|
|
332
|
+
if (sensitiveView) {
|
|
333
|
+
UXCamBridge.occludeSensitiveView(findNodeHandle(sensitiveView), true);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
static unOccludeSensitiveView(view) {
|
|
338
|
+
if (view) {
|
|
339
|
+
UXCamBridge.unOccludeSensitiveView(findNodeHandle(view));
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
|
|
2
|
+
import { Occlusion, OcclusionType } from "./types";
|
|
3
|
+
|
|
4
|
+
export class UXBlur implements Occlusion {
|
|
5
|
+
readonly type: OcclusionType;
|
|
6
|
+
constructor() {
|
|
7
|
+
this.type = OcclusionType.Blur;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
blurRadius?: number;
|
|
11
|
+
hideGestures?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class UXOverlay implements Occlusion {
|
|
15
|
+
readonly type: OcclusionType;
|
|
16
|
+
constructor() {
|
|
17
|
+
this.type = OcclusionType.Overlay;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
color?: number;
|
|
21
|
+
hideGestures?: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export class UXOcclueAllTextFields implements Occlusion {
|
|
25
|
+
readonly type: OcclusionType;
|
|
26
|
+
constructor() {
|
|
27
|
+
this.type = OcclusionType.OccludeAllTextFields;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { EmitterSubscription } from "react-native";
|
|
2
|
-
import
|
|
2
|
+
import { Configuration, Occlusion } from "./types";
|
|
3
|
+
|
|
4
|
+
export * from './types';
|
|
3
5
|
|
|
4
6
|
export default class UXCam {
|
|
5
7
|
/**
|
|
@@ -8,7 +10,7 @@ export default class UXCam {
|
|
|
8
10
|
* @brief Start the UXCam session
|
|
9
11
|
* @parameter configuration The configuration to identify your UXCam app - find appKey in the UXCam dashboard for your account
|
|
10
12
|
*/
|
|
11
|
-
static startWithConfiguration: (configuration:
|
|
13
|
+
static startWithConfiguration: (configuration: Configuration) => void;
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* @deprecated Use {@link #startWithConfiguration(configuration)} instead to start new session
|
|
@@ -16,28 +18,18 @@ export default class UXCam {
|
|
|
16
18
|
* @brief Start the UXCam session
|
|
17
19
|
* @parameter userAppKey The key to identify your UXCam app - find it in the UXCam dashboard for your account
|
|
18
20
|
*/
|
|
19
|
-
static startWithKey: (
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Returns configuration object for current session
|
|
23
|
-
*/
|
|
24
|
-
static configurationForUXCam: () => Promise<UXCamConfiguration | undefined | null>;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Update current configuration with different values
|
|
28
|
-
*/
|
|
29
|
-
static updateConfiguration: (configuration: UXCamConfiguration) => void;
|
|
21
|
+
static startWithKey: (userAppKey: string) => void;
|
|
30
22
|
|
|
31
23
|
/**
|
|
32
24
|
* Apply manual occlusion to screens in the app.
|
|
33
25
|
* This will be applied to all the screens until it is not removed manually again using {@link #removeOcclusion(occlusion)} method
|
|
34
26
|
*/
|
|
35
|
-
static applyOcclusion: (occlusion:
|
|
27
|
+
static applyOcclusion: (occlusion: Occlusion) => void;
|
|
36
28
|
|
|
37
29
|
/**
|
|
38
30
|
* Remove manual occlusion from the app that was applied using {@link #applyOcclusion(occlusion)} method
|
|
39
31
|
*/
|
|
40
|
-
static removeOcclusion: (occlusion:
|
|
32
|
+
static removeOcclusion: (occlusion: Occlusion) => void;
|
|
41
33
|
/**
|
|
42
34
|
* Starts a new session after the {@link #stopSessionAndUploadData()} method has been called.
|
|
43
35
|
* This happens automatically when the app returns from background.
|
|
@@ -78,16 +70,7 @@ export default class UXCam {
|
|
|
78
70
|
@parameter hideScreen Set `true` to hide the screen from the recording, `false` to start recording the screen contents again
|
|
79
71
|
@parameter hideGesture Set `true` to hide the gestures in the screen from the recording, `false` to start recording the gestures in the screen again
|
|
80
72
|
*/
|
|
81
|
-
static occludeSensitiveScreen: (hideScreen: boolean,
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
Hide / un-hide all UITextField views on the screen
|
|
85
|
-
|
|
86
|
-
Call this when you want to hide the contents of all UITextFields from the screen capture. Default is `false`.
|
|
87
|
-
|
|
88
|
-
@parameter occludeAll Set `true` to hide all UITextField views on the screen in the recording, `false` to stop occluding them from the screen recording.
|
|
89
|
-
*/
|
|
90
|
-
static occludeAllTextView: () => void;
|
|
73
|
+
static occludeSensitiveScreen: (hideScreen: boolean, hideGestures?: boolean) => void;
|
|
91
74
|
|
|
92
75
|
/**
|
|
93
76
|
Hide / un-hide all UITextField views on the screen
|
|
@@ -134,7 +117,7 @@ export default class UXCam {
|
|
|
134
117
|
|
|
135
118
|
@note Only number and string property types are supported to a maximum count of 100 and maximum size per entry of 1KiB
|
|
136
119
|
*/
|
|
137
|
-
static logEvent: (eventName: string, properties?:
|
|
120
|
+
static logEvent: (eventName: string, properties?: Object) => void;
|
|
138
121
|
|
|
139
122
|
/**
|
|
140
123
|
UXCam verification listener that returns success/failure status. TRUE status means the session was successfully verified and started.
|
|
@@ -142,14 +125,6 @@ export default class UXCam {
|
|
|
142
125
|
*/
|
|
143
126
|
static addVerificationListener: (status: (status: { success: boolean })=>void) => EmitterSubscription;
|
|
144
127
|
|
|
145
|
-
/**
|
|
146
|
-
* @brief Call this before calling startWithKey to disable UXCam from capturing sessions that crash
|
|
147
|
-
*
|
|
148
|
-
* @param disable `true` to disable crash capture
|
|
149
|
-
* @note By default crash handling is enabled.
|
|
150
|
-
*/
|
|
151
|
-
static disableCrashHandling: (disable: boolean) => void;
|
|
152
|
-
|
|
153
128
|
/**
|
|
154
129
|
* Returns the current recording status
|
|
155
130
|
*
|
|
@@ -260,19 +235,6 @@ export default class UXCam {
|
|
|
260
235
|
*/
|
|
261
236
|
static resumeShortBreakForAnotherApp: () => void;
|
|
262
237
|
|
|
263
|
-
/**
|
|
264
|
-
* Get whether UXCam is set to automatically record a new session when the app resumes from the background
|
|
265
|
-
*/
|
|
266
|
-
static getMultiSessionRecord: () => boolean;
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Set whether to record multiple sessions or not
|
|
270
|
-
*
|
|
271
|
-
* @parameter multiSessionRecord `true` to record a new session automatically when the device comes out of the background. If `false` then a single session is recorded, when stopped (either programmatically with `stopApplicationAndUploadData` or by the app going to the background) then no more sessions are recorded until `startWithKey` is called again).
|
|
272
|
-
* @note The default setting is to record a new session each time a device comes out of the background. This flag can be set to `false` to stop that. You can also set this with the appropriate startWithKey: variant. (This will be reset each time startWithKey is called)
|
|
273
|
-
*/
|
|
274
|
-
static setMultiSessionRecord: (multiSessionRecord: boolean) => void;
|
|
275
|
-
|
|
276
238
|
/**
|
|
277
239
|
* @brief Deletes any sessions that are awaiting upload
|
|
278
240
|
* @note Advanced use only. This is not needed for most developers. This can't be called until UXCam startWithKey: has completed
|
|
@@ -324,87 +286,4 @@ export default class UXCam {
|
|
|
324
286
|
@parameter screenName Name to apply to the current screen in the session video
|
|
325
287
|
*/
|
|
326
288
|
static tagScreenName: (screenName: string) => void;
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
Enable / disable the automatic tagging of screen names
|
|
330
|
-
|
|
331
|
-
@note By default UXCam will tag new screen names automatically. You can override this using the `tagScreenName` method or use this method to disable the automatic tagging.
|
|
332
|
-
|
|
333
|
-
@parameters autoScreenTagging Set to `true` to enable automatic screen name tagging (the default) or `false` to disable it
|
|
334
|
-
*/
|
|
335
|
-
static setAutomaticScreenNameTagging: (autoScreenTagging: boolean) => void;
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
Add a name to the list of screens names that wont be added to the timeline in automatic screen name tagging mode
|
|
339
|
-
|
|
340
|
-
This will not impact gesture or action recording - just that the timeline on the dashboard will not contain an entry for this screen name if it appears after this call.
|
|
341
|
-
Use this if you have view controllers that are presented but which are not primary user interaction screens to make your dashboard timeline easier to understand.
|
|
342
|
-
|
|
343
|
-
@param screenName A name to add to the list of screens to ignore
|
|
344
|
-
|
|
345
|
-
@note This is a convenience method for `addScreenNamesToIgnore([nameToIgnore])`
|
|
346
|
-
*/
|
|
347
|
-
static addScreenNameToIgnore: (screenName: string) => void;
|
|
348
|
-
|
|
349
|
-
/**
|
|
350
|
-
Add a list of names to the list of screens names that wont be added to the timeline in automatic screen name tagging mode
|
|
351
|
-
|
|
352
|
-
This will not impact gesture or action recording - just that the timeline on the dashboard will not contain an entry for any of the screens in this list encountered after this call.
|
|
353
|
-
Use this if you have view controllers that are presented but which are not primary user interaction screens to make your dashboard timeline easier to understand.
|
|
354
|
-
|
|
355
|
-
@param screenNames A list of screen names to add to the ignore list
|
|
356
|
-
*/
|
|
357
|
-
static addScreenNamesToIgnore: (screenNames: string[]) => void;
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
Remove the a name from the list of screens to be ignored in automatic screen name tagging mode
|
|
361
|
-
|
|
362
|
-
@param screenName The name to remove from the list of ignored screens
|
|
363
|
-
@note This is a convenience method for `removeScreenNamesToIgnore([nameToRemove])`
|
|
364
|
-
*/
|
|
365
|
-
static removeScreenNameToIgnore: (screenName: string) => void;
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
Remove the a list of names from the list of screens to be ignored in automatic screen name tagging mode
|
|
369
|
-
|
|
370
|
-
@param screenNames A list of names to remove from the ignore list
|
|
371
|
-
*/
|
|
372
|
-
static removeScreenNamesToIgnore: (screenNames: string[]) => void;
|
|
373
|
-
|
|
374
|
-
// Remove all entries from the list of screen names to be ignored in automatic screen name tagging mode
|
|
375
|
-
static removeAllScreenNamesToIgnore: () => void;
|
|
376
|
-
|
|
377
|
-
// Get the list of screen names that are being ignored in automatic screen name tagging mode
|
|
378
|
-
static screenNamesBeingIgnored: () => string[];
|
|
379
|
-
|
|
380
|
-
/**
|
|
381
|
-
Set the token to be used to send push notifications to the app
|
|
382
|
-
@param token Push notification token
|
|
383
|
-
*/
|
|
384
|
-
static setPushNotificationToken: (token: string) => void;
|
|
385
|
-
|
|
386
|
-
/**
|
|
387
|
-
Send a report of a problem your app encountered to be displayed in the dashboard
|
|
388
|
-
@param eventName Name of the problem event
|
|
389
|
-
@param properties Properties object associated with the event
|
|
390
|
-
@note Only number and string property types are supported to a maximum count of 100 and maximum size per entry of 1KiB
|
|
391
|
-
*/
|
|
392
|
-
static reportBugEvent: (eventName: string, properties?: any) => void;
|
|
393
|
-
|
|
394
|
-
/**
|
|
395
|
-
Enable/Disable advanced gesture recognition like swipe and pinch gestures.
|
|
396
|
-
@param enable Set `true` to enable or `false` to disable before `startWithKey`. Default is `true`.
|
|
397
|
-
@note Disable this on iOS if you are having problems with swipes or other gestures being interrupted while recording sessions.
|
|
398
|
-
*/
|
|
399
|
-
static enableAdvancedGestureRecognizers: (enable: boolean) => void;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
export interface UXCamConfiguration {
|
|
403
|
-
userAppKey: string;
|
|
404
|
-
enableMultiSessionRecord?: boolean;
|
|
405
|
-
enableCrashHandling?: boolean;
|
|
406
|
-
enableAutomaticScreenNameTagging?: boolean;
|
|
407
|
-
enableAdvancedGestureRecognition?: boolean;
|
|
408
|
-
enableNetworkLogging?: boolean;
|
|
409
|
-
occlusions?: UXCamOcclusion[];
|
|
410
289
|
}
|
package/src/index.js
ADDED
package/src/types.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface Configuration {
|
|
2
|
+
userAppKey: string;
|
|
3
|
+
enableMultiSessionRecord?: boolean;
|
|
4
|
+
enableCrashHandling?: boolean;
|
|
5
|
+
enableAutomaticScreenNameTagging?: boolean;
|
|
6
|
+
enableAdvancedGestureRecognition?: boolean;
|
|
7
|
+
enableNetworkLogging?: boolean;
|
|
8
|
+
occlusions?: Occlusion[];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export enum OcclusionType {
|
|
12
|
+
OccludeAllTextFields = 1,
|
|
13
|
+
Overlay = 2,
|
|
14
|
+
Blur = 3
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface Occlusion {
|
|
18
|
+
readonly type: OcclusionType;
|
|
19
|
+
}
|