@truewatchtech/react-native-mobile 0.3.15-alpha.1
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/FTMobileReactNativeSDK.podspec +22 -0
- package/LICENSE +201 -0
- package/README.md +37 -0
- package/android/.project +17 -0
- package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
- package/android/build.gradle +183 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/android/gradle.properties +5 -0
- package/android/gradlew +185 -0
- package/android/gradlew.bat +89 -0
- package/android/local.properties +8 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/AndroidManifestNew.xml +4 -0
- package/android/src/main/java/com/ft/sdk/InnerClassProxy.java +8 -0
- package/android/src/main/java/com/ft/sdk/reactnative/FTLogImpl.java +133 -0
- package/android/src/main/java/com/ft/sdk/reactnative/FTMobileImpl.java +198 -0
- package/android/src/main/java/com/ft/sdk/reactnative/FTRUMImpl.java +267 -0
- package/android/src/main/java/com/ft/sdk/reactnative/FTTraceImpl.java +89 -0
- package/android/src/main/java/com/ft/sdk/reactnative/utils/ReactNativeUtils.java +59 -0
- package/android/src/newarch/java/com/ft/sdk/reactnative/FTLogModule.java +39 -0
- package/android/src/newarch/java/com/ft/sdk/reactnative/FTMobileModule.java +69 -0
- package/android/src/newarch/java/com/ft/sdk/reactnative/FTRUMModule.java +84 -0
- package/android/src/newarch/java/com/ft/sdk/reactnative/FTTraceModule.java +34 -0
- package/android/src/oldarch/java/com/ft/sdk/reactnative/FTLogModule.java +36 -0
- package/android/src/oldarch/java/com/ft/sdk/reactnative/FTMobileModule.java +69 -0
- package/android/src/oldarch/java/com/ft/sdk/reactnative/FTRUMModule.java +70 -0
- package/android/src/oldarch/java/com/ft/sdk/reactnative/FTTraceModule.java +30 -0
- package/android/src/rnpost74/java/com/ft/sdk/reactnative/FTMobilePackage.java +71 -0
- package/android/src/rnpre74/java/com/ft/sdk/reactnative/FTMobilePackage.java +33 -0
- package/ios/.idea/.name +1 -0
- package/ios/.idea/ios.iml +2 -0
- package/ios/.idea/modules.xml +8 -0
- package/ios/.idea/vcs.xml +6 -0
- package/ios/.idea/xcode.xml +4 -0
- package/ios/FTMobileReactNative.h +18 -0
- package/ios/FTMobileReactNative.m +183 -0
- package/ios/FTReactNativeLog.h +18 -0
- package/ios/FTReactNativeLog.m +60 -0
- package/ios/FTReactNativeRUM.h +19 -0
- package/ios/FTReactNativeRUM.m +173 -0
- package/ios/FTReactNativeTrace.h +20 -0
- package/ios/FTReactNativeTrace.m +58 -0
- package/ios/FTReactNativeUtils.h +16 -0
- package/ios/FTReactNativeUtils.m +32 -0
- package/ios/FtMobileAgent.xcodeproj/project.pbxproj +293 -0
- package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/xcuserdata/Brandon.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/FtMobileAgent.xcodeproj/project.xcworkspace/xcuserdata/Brandon.xcuserdatad/xcschemes/xcschememanagement.plist +5 -0
- package/ios/FtMobileAgent.xcodeproj/xcuserdata/Brandon.xcuserdatad/xcschemes/FtMobileAgent.xcscheme +56 -0
- package/ios/FtMobileAgent.xcodeproj/xcuserdata/Brandon.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/ios/RCTVersion.h +8 -0
- package/lib/commonjs/ft_logger.js +70 -0
- package/lib/commonjs/ft_logger.js.map +1 -0
- package/lib/commonjs/ft_mobile_agent.js +93 -0
- package/lib/commonjs/ft_mobile_agent.js.map +1 -0
- package/lib/commonjs/ft_rum.js +143 -0
- package/lib/commonjs/ft_rum.js.map +1 -0
- package/lib/commonjs/ft_tracing.js +61 -0
- package/lib/commonjs/ft_tracing.js.map +1 -0
- package/lib/commonjs/index.js +138 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/rum/FTRumActionTracking.js +214 -0
- package/lib/commonjs/rum/FTRumActionTracking.js.map +1 -0
- package/lib/commonjs/rum/FTRumErrorTracking.js +99 -0
- package/lib/commonjs/rum/FTRumErrorTracking.js.map +1 -0
- package/lib/commonjs/version.js +9 -0
- package/lib/commonjs/version.js.map +1 -0
- package/lib/module/ft_logger.js +64 -0
- package/lib/module/ft_logger.js.map +1 -0
- package/lib/module/ft_mobile_agent.js +88 -0
- package/lib/module/ft_mobile_agent.js.map +1 -0
- package/lib/module/ft_rum.js +138 -0
- package/lib/module/ft_rum.js.map +1 -0
- package/lib/module/ft_tracing.js +56 -0
- package/lib/module/ft_tracing.js.map +1 -0
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/rum/FTRumActionTracking.js +206 -0
- package/lib/module/rum/FTRumActionTracking.js.map +1 -0
- package/lib/module/rum/FTRumErrorTracking.js +92 -0
- package/lib/module/rum/FTRumErrorTracking.js.map +1 -0
- package/lib/module/version.js +3 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/ft_logger.d.ts +52 -0
- package/lib/typescript/ft_mobile_agent.d.ts +123 -0
- package/lib/typescript/ft_rum.d.ts +200 -0
- package/lib/typescript/ft_tracing.d.ts +47 -0
- package/lib/typescript/index.d.ts +7 -0
- package/lib/typescript/rum/FTRumActionTracking.d.ts +15 -0
- package/lib/typescript/rum/FTRumErrorTracking.d.ts +11 -0
- package/lib/typescript/version.d.ts +1 -0
- package/package.json +167 -0
- package/scripts/replace-react-require.js +52 -0
- package/src/ft_logger.tsx +77 -0
- package/src/ft_mobile_agent.tsx +162 -0
- package/src/ft_rum.tsx +247 -0
- package/src/ft_tracing.tsx +79 -0
- package/src/index.tsx +17 -0
- package/src/rum/FTRumActionTracking.tsx +232 -0
- package/src/rum/FTRumErrorTracking.tsx +110 -0
- package/src/version.ts +2 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
package com.ft.sdk.reactnative;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.Promise;
|
|
6
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
7
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
8
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
9
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
10
|
+
|
|
11
|
+
public class FTMobileModule extends ReactContextBaseJavaModule {
|
|
12
|
+
|
|
13
|
+
public FTMobileModule(ReactApplicationContext reactContext) {
|
|
14
|
+
super(reactContext);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
private final FTMobileImpl impl = new FTMobileImpl();
|
|
18
|
+
|
|
19
|
+
@ReactMethod
|
|
20
|
+
public void sdkConfig(ReadableMap context, Promise promise) {
|
|
21
|
+
impl.sdkConfig(context, promise);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@ReactMethod
|
|
25
|
+
public void bindRUMUserData(String userId, String userName, String userEmail, ReadableMap extra, Promise promise) {
|
|
26
|
+
impl.bindRUMUserData(userId, userName, userEmail, extra, promise);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@ReactMethod
|
|
30
|
+
public void unbindRUMUserData(Promise promise) {
|
|
31
|
+
impl.unbindRUMUserData(promise);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@ReactMethod
|
|
35
|
+
public void flushSyncData(Promise promise) {
|
|
36
|
+
impl.flushSyncData(promise);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@ReactMethod
|
|
40
|
+
public void appendGlobalContext(ReadableMap extra, Promise promise) {
|
|
41
|
+
impl.appendGlobalContext(extra, promise);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@ReactMethod
|
|
45
|
+
public void appendLogGlobalContext(ReadableMap extra, Promise promise) {
|
|
46
|
+
impl.appendLogGlobalContext(extra, promise);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@ReactMethod
|
|
50
|
+
public void appendRUMGlobalContext(ReadableMap extra, Promise promise) {
|
|
51
|
+
impl.appendRUMGlobalContext(extra, promise);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@ReactMethod
|
|
55
|
+
public void shutDown(Promise promise) {
|
|
56
|
+
impl.shutDown(promise);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@ReactMethod
|
|
60
|
+
public void clearAllData(Promise promise) {
|
|
61
|
+
impl.clearAllData(promise);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@NonNull
|
|
65
|
+
@Override
|
|
66
|
+
public String getName() {
|
|
67
|
+
return FTMobileImpl.NAME;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
package com.ft.sdk.reactnative;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Promise;
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
5
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
6
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
7
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
8
|
+
|
|
9
|
+
public class FTRUMModule extends ReactContextBaseJavaModule {
|
|
10
|
+
private final FTRUMImpl impl = new FTRUMImpl();
|
|
11
|
+
|
|
12
|
+
public FTRUMModule(ReactApplicationContext reactContext) {
|
|
13
|
+
super(reactContext);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@Override
|
|
17
|
+
public String getName() {
|
|
18
|
+
return FTRUMImpl.NAME;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@ReactMethod
|
|
22
|
+
public void setConfig(ReadableMap context, Promise promise) {
|
|
23
|
+
impl.setConfig(context, promise);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@ReactMethod
|
|
27
|
+
public void startAction(String actionName, String actionType, ReadableMap map, Promise promise) {
|
|
28
|
+
impl.startAction(actionName, actionType, map, promise);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@ReactMethod
|
|
32
|
+
public void addAction(String actionName, String actionType, ReadableMap map, Promise promise) {
|
|
33
|
+
impl.addAction(actionName, actionType, map, promise);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@ReactMethod
|
|
37
|
+
public void onCreateView(String viewName, Double duration, Promise promise) {
|
|
38
|
+
impl.onCreateView(viewName, duration, promise);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@ReactMethod
|
|
42
|
+
public void startView(String viewName, ReadableMap map, Promise promise) {
|
|
43
|
+
impl.startView(viewName, map, promise);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@ReactMethod
|
|
47
|
+
public void stopView(ReadableMap map, Promise promise) {
|
|
48
|
+
impl.stopView(map, promise);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@ReactMethod
|
|
52
|
+
public void addError(String stack, String message, ReadableMap map, Promise promise) {
|
|
53
|
+
impl.addError(stack, message, map, promise);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@ReactMethod
|
|
57
|
+
public void addErrorWithType(String errorType, String stack, String message, ReadableMap map, Promise promise) {
|
|
58
|
+
impl.addErrorWithType(errorType, stack, message, map, promise);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@ReactMethod
|
|
62
|
+
public void startResource(String key, ReadableMap map, Promise promise) {
|
|
63
|
+
impl.startResource(key, map, promise);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@ReactMethod
|
|
67
|
+
public void stopResource(String key, ReadableMap map, Promise promise) {
|
|
68
|
+
impl.stopResource(key, map, promise);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
package com.ft.sdk.reactnative;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Promise;
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
5
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
6
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
7
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
8
|
+
|
|
9
|
+
public class FTTraceModule extends ReactContextBaseJavaModule {
|
|
10
|
+
private final FTTraceImpl impl = new FTTraceImpl();
|
|
11
|
+
|
|
12
|
+
public FTTraceModule(ReactApplicationContext reactContext) {
|
|
13
|
+
super(reactContext);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@Override
|
|
17
|
+
public String getName() {
|
|
18
|
+
return FTTraceImpl.NAME;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@ReactMethod
|
|
22
|
+
public void setConfig(ReadableMap context, Promise promise) {
|
|
23
|
+
impl.setConfig(context, promise);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@ReactMethod
|
|
27
|
+
public void getTraceHeaderFields(String url, String key, Promise promise) {
|
|
28
|
+
impl.getTraceHeaderFields(url, key, promise);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
package com.ft.sdk.reactnative;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
import androidx.annotation.Nullable;
|
|
5
|
+
|
|
6
|
+
import com.ft.sdk.reactnative.BuildConfig;
|
|
7
|
+
import com.facebook.react.BaseReactPackage;
|
|
8
|
+
import com.facebook.react.bridge.NativeModule;
|
|
9
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
10
|
+
import com.facebook.react.module.model.ReactModuleInfo;
|
|
11
|
+
import com.facebook.react.module.model.ReactModuleInfoProvider;
|
|
12
|
+
|
|
13
|
+
import java.util.HashMap;
|
|
14
|
+
import java.util.Map;
|
|
15
|
+
|
|
16
|
+
public class FTMobilePackage extends BaseReactPackage {
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@Nullable
|
|
20
|
+
@Override
|
|
21
|
+
public NativeModule getModule(@NonNull String name, @NonNull ReactApplicationContext reactApplicationContext) {
|
|
22
|
+
switch (name) {
|
|
23
|
+
case FTMobileImpl.NAME:
|
|
24
|
+
return new FTMobileModule(reactApplicationContext);
|
|
25
|
+
case FTLogImpl.NAME:
|
|
26
|
+
return new FTLogModule(reactApplicationContext);
|
|
27
|
+
case FTTraceImpl.NAME:
|
|
28
|
+
return new FTTraceModule(reactApplicationContext);
|
|
29
|
+
case FTRUMImpl.NAME:
|
|
30
|
+
return new FTRUMModule(reactApplicationContext);
|
|
31
|
+
// case FTSessionReplayImpl.NAME:
|
|
32
|
+
// return new FTSessionReplayModule(reactApplicationContext);
|
|
33
|
+
default:
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@Override
|
|
39
|
+
public ReactModuleInfoProvider getReactModuleInfoProvider() {
|
|
40
|
+
return new ReactModuleInfoProvider() {
|
|
41
|
+
@Override
|
|
42
|
+
public Map<String, ReactModuleInfo> getReactModuleInfos() {
|
|
43
|
+
boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
|
|
44
|
+
|
|
45
|
+
String[] moduleNames = {
|
|
46
|
+
FTMobileImpl.NAME,
|
|
47
|
+
FTRUMImpl.NAME,
|
|
48
|
+
FTLogImpl.NAME,
|
|
49
|
+
FTTraceImpl.NAME,
|
|
50
|
+
// FTSessionReplayImpl.NAME,
|
|
51
|
+
};
|
|
52
|
+
Map<String, ReactModuleInfo> moduleInfos = new HashMap<>();
|
|
53
|
+
|
|
54
|
+
for (String moduleName : moduleNames) {
|
|
55
|
+
moduleInfos.put(
|
|
56
|
+
moduleName,
|
|
57
|
+
new ReactModuleInfo(
|
|
58
|
+
moduleName,
|
|
59
|
+
moduleName,
|
|
60
|
+
false, // canOverrideExistingModule
|
|
61
|
+
false, // needsEagerInit
|
|
62
|
+
false, // isCxxModule
|
|
63
|
+
isTurboModule // isTurboModule
|
|
64
|
+
)
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
return moduleInfos;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
package com.ft.sdk.reactnative;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.ReactPackage;
|
|
6
|
+
import com.facebook.react.bridge.NativeModule;
|
|
7
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
8
|
+
import com.facebook.react.uimanager.ViewManager;
|
|
9
|
+
|
|
10
|
+
import java.util.ArrayList;
|
|
11
|
+
import java.util.Collections;
|
|
12
|
+
import java.util.List;
|
|
13
|
+
|
|
14
|
+
public class FTMobilePackage implements ReactPackage {
|
|
15
|
+
|
|
16
|
+
@Override
|
|
17
|
+
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
|
18
|
+
List<NativeModule> modules = new ArrayList<>();
|
|
19
|
+
modules.add(new FTMobileModule(reactContext));
|
|
20
|
+
modules.add(new FTLogModule(reactContext));
|
|
21
|
+
modules.add(new FTTraceModule(reactContext));
|
|
22
|
+
modules.add(new FTRUMModule(reactContext));
|
|
23
|
+
return modules;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@NonNull
|
|
27
|
+
@Override
|
|
28
|
+
public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactApplicationContext) {
|
|
29
|
+
return Collections.emptyList();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
}
|
package/ios/.idea/.name
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
FtMobileAgent
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FTMobileReactNative.h
|
|
3
|
+
// FtMobileAgent
|
|
4
|
+
//
|
|
5
|
+
// Created by Hu Leilei on 2021/12/14.
|
|
6
|
+
// Copyright © 2021 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
#import <React/RCTBridgeModule.h>
|
|
11
|
+
|
|
12
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
13
|
+
|
|
14
|
+
@interface FTMobileReactNative : NSObject<RCTBridgeModule>
|
|
15
|
+
|
|
16
|
+
@end
|
|
17
|
+
|
|
18
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FTMobileReactNative.m
|
|
3
|
+
// FtMobileAgent
|
|
4
|
+
//
|
|
5
|
+
// Created by Hu Leilei on 2021/12/14.
|
|
6
|
+
// Copyright © 2021 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "FTMobileReactNative.h"
|
|
10
|
+
#import <FTMobileSDK/FTMobileAgent.h>
|
|
11
|
+
#import <FTMobileSDK/FTMobileConfig+Private.h>
|
|
12
|
+
#import <React/RCTConvert.h>
|
|
13
|
+
#import <FTMobileSDK/FTThreadDispatchManager.h>
|
|
14
|
+
#import <FTMobileSDK/FTConstants.h>
|
|
15
|
+
@implementation FTMobileReactNative
|
|
16
|
+
RCT_EXPORT_MODULE()
|
|
17
|
+
RCT_REMAP_METHOD(sdkConfig,
|
|
18
|
+
context:(NSDictionary *)context
|
|
19
|
+
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
20
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
21
|
+
{
|
|
22
|
+
[FTThreadDispatchManager performBlockDispatchMainSyncSafe:^{
|
|
23
|
+
FTMobileConfig *config;
|
|
24
|
+
NSString *datakitUrl = [RCTConvert NSString:context[@"datakitUrl"]];
|
|
25
|
+
NSString *dataWayUrl = [RCTConvert NSString:context[@"datawayUrl"]];
|
|
26
|
+
NSString *clientToken = [RCTConvert NSString:context[@"clientToken"]];
|
|
27
|
+
if(dataWayUrl && dataWayUrl.length>0 && clientToken && clientToken.length>0){
|
|
28
|
+
config = [[FTMobileConfig alloc]initWithDatawayUrl:dataWayUrl clientToken:clientToken];
|
|
29
|
+
}else if(datakitUrl && datakitUrl.length>0){
|
|
30
|
+
config = [[FTMobileConfig alloc]initWithDatakitUrl:datakitUrl];
|
|
31
|
+
}else{
|
|
32
|
+
resolve(nil);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if ([context.allKeys containsObject:@"debug"]) {
|
|
36
|
+
config.enableSDKDebugLog = [RCTConvert BOOL:context[@"debug"]];
|
|
37
|
+
}
|
|
38
|
+
if ([context.allKeys containsObject:@"service"]) {
|
|
39
|
+
config.service = [RCTConvert NSString:context[@"service"]];
|
|
40
|
+
}
|
|
41
|
+
if([context.allKeys containsObject:@"env"]){
|
|
42
|
+
id env = context[@"env"];
|
|
43
|
+
if([env isKindOfClass:NSString.class]){
|
|
44
|
+
config.env = env;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if([context.allKeys containsObject:@"envType"]){
|
|
48
|
+
id env = context[@"envType"];
|
|
49
|
+
if([env isKindOfClass:NSNumber.class]){
|
|
50
|
+
int envType = [env intValue];
|
|
51
|
+
if(envType>=0 && envType<5){
|
|
52
|
+
[config setEnvWithType:envType];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if ([context.allKeys containsObject:@"autoSync"]) {
|
|
57
|
+
config.autoSync = [RCTConvert BOOL:context[@"autoSync"]];
|
|
58
|
+
}
|
|
59
|
+
if ([context.allKeys containsObject:@"syncPageSize"]) {
|
|
60
|
+
config.syncPageSize = [RCTConvert int:context[@"syncPageSize"]];
|
|
61
|
+
}
|
|
62
|
+
if ([context.allKeys containsObject:@"syncSleepTime"]) {
|
|
63
|
+
config.syncSleepTime = [RCTConvert int:context[@"syncSleepTime"]];
|
|
64
|
+
}
|
|
65
|
+
if ([context.allKeys containsObject:@"enableDataIntegerCompatible"]) {
|
|
66
|
+
config.enableDataIntegerCompatible = [RCTConvert BOOL:context[@"enableDataIntegerCompatible"]];
|
|
67
|
+
}
|
|
68
|
+
if ([context.allKeys containsObject:@"compressIntakeRequests"]) {
|
|
69
|
+
config.compressIntakeRequests = [RCTConvert BOOL:context[@"compressIntakeRequests"]];
|
|
70
|
+
}
|
|
71
|
+
if ([context.allKeys containsObject:@"globalContext"]) {
|
|
72
|
+
config.globalContext = [RCTConvert NSDictionary:context[@"globalContext"]];
|
|
73
|
+
}
|
|
74
|
+
if ([context.allKeys containsObject:@"groupIdentifiers"]){
|
|
75
|
+
config.groupIdentifiers = [RCTConvert NSArray:context[@"groupIdentifiers"]];
|
|
76
|
+
}
|
|
77
|
+
if ([context.allKeys containsObject:@"dbDiscardStrategy"]){
|
|
78
|
+
config.dbDiscardType = [RCTConvert int:context[@"dbDiscardStrategy"]];
|
|
79
|
+
}
|
|
80
|
+
if ([context.allKeys containsObject:@"enableLimitWithDbSize"]){
|
|
81
|
+
config.enableLimitWithDbSize = [RCTConvert BOOL:context[@"enableLimitWithDbSize"]];
|
|
82
|
+
}
|
|
83
|
+
if ([context.allKeys containsObject:@"dbCacheLimit"]){
|
|
84
|
+
config.dbCacheLimit = [RCTConvert double:context[@"dbCacheLimit"]];
|
|
85
|
+
}
|
|
86
|
+
if ([context.allKeys containsObject:@"dataModifier"]){
|
|
87
|
+
NSDictionary *dataModifierDict = [[RCTConvert NSDictionary:context[@"dataModifier"]] copy];
|
|
88
|
+
config.dataModifier = ^id _Nullable(NSString * _Nonnull key, id _Nonnull value) {
|
|
89
|
+
if ([dataModifierDict.allKeys containsObject:key]) {
|
|
90
|
+
return dataModifierDict[key];
|
|
91
|
+
}
|
|
92
|
+
return value;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if ([context.allKeys containsObject:@"lineDataModifier"]){
|
|
96
|
+
NSDictionary *dataModifierDict = [[RCTConvert NSDictionary:context[@"lineDataModifier"]] copy];
|
|
97
|
+
config.lineDataModifier = ^NSDictionary<NSString *,id> * _Nullable(NSString * _Nonnull measurement, NSDictionary<NSString *,id> * _Nonnull data) {
|
|
98
|
+
if ([measurement isEqualToString:FT_LOGGER_SOURCE] || [measurement isEqualToString:FT_LOGGER_TVOS_SOURCE]) {
|
|
99
|
+
return [dataModifierDict valueForKey:@"log"];
|
|
100
|
+
}else{
|
|
101
|
+
return [dataModifierDict valueForKey:measurement];
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
NSString *pkgInfo = [RCTConvert NSString:context[@"pkgInfo"]];
|
|
106
|
+
[config addPkgInfo:@"reactnative" value:pkgInfo];
|
|
107
|
+
[FTMobileAgent startWithConfigOptions:config];
|
|
108
|
+
resolve(nil);
|
|
109
|
+
}];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
RCT_REMAP_METHOD(bindRUMUserData,
|
|
113
|
+
userId:(NSString*)userId userName:(NSString*)userName userEmail:(NSString*)userEmail extra:(NSDictionary *)extra
|
|
114
|
+
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
115
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
116
|
+
[[FTMobileAgent sharedInstance] bindUserWithUserID:userId userName:userName userEmail:userEmail extra:extra];
|
|
117
|
+
resolve(nil);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
RCT_REMAP_METHOD(unbindRUMUserData,
|
|
121
|
+
unbindRUMUserData_Resolver:(RCTPromiseResolveBlock)resolve
|
|
122
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
123
|
+
){
|
|
124
|
+
[[FTMobileAgent sharedInstance] unbindUser];
|
|
125
|
+
resolve(nil);
|
|
126
|
+
}
|
|
127
|
+
RCT_REMAP_METHOD(appendGlobalContext,
|
|
128
|
+
appendGlobalContext:(NSDictionary *)context
|
|
129
|
+
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
130
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
131
|
+
[FTMobileAgent appendGlobalContext:context];
|
|
132
|
+
resolve(nil);
|
|
133
|
+
}
|
|
134
|
+
RCT_REMAP_METHOD(appendRUMGlobalContext,
|
|
135
|
+
appendRUMGlobalContext:(NSDictionary *)context
|
|
136
|
+
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
137
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
138
|
+
[FTMobileAgent appendRUMGlobalContext:context];
|
|
139
|
+
resolve(nil);
|
|
140
|
+
}
|
|
141
|
+
RCT_REMAP_METHOD(appendLogGlobalContext,
|
|
142
|
+
appendLogGlobalContext:(NSDictionary *)context
|
|
143
|
+
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
144
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
145
|
+
[FTMobileAgent appendLogGlobalContext:context];
|
|
146
|
+
resolve(nil);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
RCT_REMAP_METHOD(flushSyncData,
|
|
150
|
+
flushSyncData_Resolver:(RCTPromiseResolveBlock)resolve
|
|
151
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
152
|
+
){
|
|
153
|
+
[[FTMobileAgent sharedInstance] flushSyncData];
|
|
154
|
+
resolve(nil);
|
|
155
|
+
}
|
|
156
|
+
RCT_REMAP_METHOD(trackEventFromExtension,
|
|
157
|
+
identifier:(NSString*)identifier
|
|
158
|
+
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
159
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
160
|
+
[[FTMobileAgent sharedInstance] trackEventFromExtensionWithGroupIdentifier:identifier completion:^(NSString * _Nonnull groupIdentifier, NSArray * _Nonnull events) {
|
|
161
|
+
if(events.count>0){
|
|
162
|
+
resolve(@{@"groupIdentifier":identifier,
|
|
163
|
+
@"datas":events
|
|
164
|
+
});
|
|
165
|
+
}else{
|
|
166
|
+
resolve(nil);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
}];
|
|
170
|
+
}
|
|
171
|
+
RCT_REMAP_METHOD(shutDown,
|
|
172
|
+
shutDown_findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
173
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
174
|
+
[FTMobileAgent shutDown];
|
|
175
|
+
resolve(nil);
|
|
176
|
+
}
|
|
177
|
+
RCT_REMAP_METHOD(clearAllData,
|
|
178
|
+
clearAllData_findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
179
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
180
|
+
[FTMobileAgent clearAllData];
|
|
181
|
+
resolve(nil);
|
|
182
|
+
}
|
|
183
|
+
@end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FTReactNativeLog.h
|
|
3
|
+
// FtMobileAgent
|
|
4
|
+
//
|
|
5
|
+
// Created by Hu Leilei on 2021/12/14.
|
|
6
|
+
// Copyright © 2021 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
#import <React/RCTBridgeModule.h>
|
|
11
|
+
|
|
12
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
13
|
+
|
|
14
|
+
@interface FTReactNativeLog : NSObject<RCTBridgeModule>
|
|
15
|
+
|
|
16
|
+
@end
|
|
17
|
+
|
|
18
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FTReactNativeLog.m
|
|
3
|
+
// FtMobileAgent
|
|
4
|
+
//
|
|
5
|
+
// Created by Hu Leilei on 2021/12/14.
|
|
6
|
+
// Copyright © 2021 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "FTReactNativeLog.h"
|
|
10
|
+
#import <FTMobileSDK/FTMobileAgent.h>
|
|
11
|
+
#import <React/RCTConvert.h>
|
|
12
|
+
#import <FTMobileSDK/FTLogger+Private.h>
|
|
13
|
+
@implementation FTReactNativeLog
|
|
14
|
+
RCT_EXPORT_MODULE()
|
|
15
|
+
|
|
16
|
+
RCT_REMAP_METHOD(logConfig,
|
|
17
|
+
context:(NSDictionary *)context
|
|
18
|
+
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
19
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
20
|
+
FTLoggerConfig *logger = [[FTLoggerConfig alloc]init];
|
|
21
|
+
if ([context.allKeys containsObject:@"sampleRate"]) {
|
|
22
|
+
logger.samplerate = [RCTConvert double:context[@"sampleRate"]]*100;
|
|
23
|
+
}
|
|
24
|
+
NSArray<NSNumber *>*filters = [RCTConvert NSNumberArray:context[@"logLevelFilters"]];
|
|
25
|
+
if (filters) {
|
|
26
|
+
logger.logLevelFilter = filters;
|
|
27
|
+
}
|
|
28
|
+
if([context.allKeys containsObject:@"discardStrategy"]){
|
|
29
|
+
logger.discardType = [RCTConvert int:context[@"discardStrategy"]];
|
|
30
|
+
}
|
|
31
|
+
if ([context.allKeys containsObject:@"globalContext"]) {
|
|
32
|
+
logger.globalContext = [RCTConvert NSDictionary:context[@"globalContext"]];
|
|
33
|
+
}
|
|
34
|
+
logger.enableCustomLog = [RCTConvert BOOL:context[@"enableCustomLog"]];
|
|
35
|
+
logger.enableLinkRumData = [RCTConvert BOOL:context[@"enableLinkRumData"]];
|
|
36
|
+
if ([context.allKeys containsObject:@"logCacheLimitCount"]) {
|
|
37
|
+
logger.logCacheLimitCount = [RCTConvert int:context[@"logCacheLimitCount"]];
|
|
38
|
+
}
|
|
39
|
+
[[FTMobileAgent sharedInstance] startLoggerWithConfigOptions:logger];
|
|
40
|
+
resolve(nil);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
RCT_REMAP_METHOD(logging,
|
|
44
|
+
logging:(NSString *)content status:(nonnull NSNumber *)status property:(NSDictionary *)property
|
|
45
|
+
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
46
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
47
|
+
|
|
48
|
+
LogStatus logStatus =(LogStatus)[status integerValue];
|
|
49
|
+
[[FTLogger sharedInstance] log:content statusType:logStatus property:property];
|
|
50
|
+
resolve(nil);
|
|
51
|
+
}
|
|
52
|
+
RCT_REMAP_METHOD(logWithStatusString,
|
|
53
|
+
logWithStatusString:(NSString *)content status:(NSString *)status property:(NSDictionary *)property
|
|
54
|
+
findEventsWithResolver:(RCTPromiseResolveBlock)resolve
|
|
55
|
+
rejecter:(RCTPromiseRejectBlock)reject){
|
|
56
|
+
[[FTLogger sharedInstance] log:content status:status property:property];
|
|
57
|
+
resolve(nil);
|
|
58
|
+
}
|
|
59
|
+
@end
|
|
60
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FTReactNativeRUM.h
|
|
3
|
+
// FtMobileAgent
|
|
4
|
+
//
|
|
5
|
+
// Created by Hu Leilei on 2021/12/14.
|
|
6
|
+
// Copyright © 2021 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
#import <React/RCTBridgeModule.h>
|
|
11
|
+
|
|
12
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
13
|
+
|
|
14
|
+
@interface FTReactNativeRUM : NSObject<RCTBridgeModule>
|
|
15
|
+
|
|
16
|
+
@end
|
|
17
|
+
|
|
18
|
+
NS_ASSUME_NONNULL_END
|
|
19
|
+
|