react-native-idosdk 1.0.4 → 1.0.6
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 +18 -0
- package/README.md +56 -68
- package/android/build.gradle +11 -14
- package/android/src/main/AndroidManifest.xml +11 -3
- package/android/src/main/java/com/getui/{reactnativegetui → reactnativeido}/GetuiIdoModule.java +7 -3
- package/android/src/main/java/com/getui/{reactnativegetui → reactnativeido}/GetuiIdoPackage.java +1 -1
- package/android/src/main/java/com/getui/{reactnativegetui → reactnativeido}/GetuiLogger.java +1 -1
- package/docs/superpowers/plans/2026-07-13-android-getui-maven-dependencies.md +323 -0
- package/docs/superpowers/specs/2026-07-13-android-getui-maven-dependencies-design.md +96 -0
- package/document/android.md +48 -112
- package/document/iOS.md +31 -283
- package/package.json +4 -1
- package/react-native-harmony-ido/README.md +266 -0
- package/react-native-harmony-ido/gt-ido-ohos-plugin-1.0.1.tgz +0 -0
- package/react-native-harmony-ido/harmony/BuildProfile.ets +17 -0
- package/react-native-harmony-ido/harmony/IdoOhosSdk.har +0 -0
- package/react-native-harmony-ido/harmony/Index.ets +1 -0
- package/react-native-harmony-ido/harmony/build-profile.json5 +36 -0
- package/react-native-harmony-ido/harmony/consumer-rules.txt +0 -0
- package/react-native-harmony-ido/harmony/hvigorfile.ts +6 -0
- package/react-native-harmony-ido/harmony/libs/getui_ido_1.0.1.har +0 -0
- package/react-native-harmony-ido/harmony/obfuscation-rules.txt +23 -0
- package/react-native-harmony-ido/harmony/oh-package-lock.json5 +38 -0
- package/react-native-harmony-ido/harmony/oh-package.json5 +12 -0
- package/react-native-harmony-ido/harmony/src/main/cpp/CMakeLists.txt +7 -0
- package/react-native-harmony-ido/harmony/src/main/cpp/IdoModule.cpp +38 -0
- package/react-native-harmony-ido/harmony/src/main/cpp/IdoModule.h +21 -0
- package/react-native-harmony-ido/harmony/src/main/cpp/IdoPackage.h +76 -0
- package/react-native-harmony-ido/harmony/src/main/ets/IdoModule.ets +150 -0
- package/react-native-harmony-ido/harmony/src/main/ets/IdoPackage.ets +24 -0
- package/react-native-harmony-ido/harmony/src/main/module.json5 +9 -0
- package/react-native-harmony-ido/harmony/src/main/resources/base/element/float.json +8 -0
- package/react-native-harmony-ido/harmony/src/main/resources/base/element/string.json +8 -0
- package/react-native-harmony-ido/harmony/ts.ets +2 -0
- package/react-native-harmony-ido/index.ts +4 -0
- package/react-native-harmony-ido/package.json +35 -0
- package/react-native-harmony-ido/src/specs/v1/NativeIdo.ts +44 -0
- package/android/libs/gs-1.4.12.0.jar +0 -0
- package/android/libs/gtc-3.2.18.0.jar +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// entry/src/main/ets/turbomodule/CalculatorModule.ts
|
|
2
|
+
import { AnyThreadTurboModule, UITurboModule } from '@rnoh/react-native-openharmony/ts';
|
|
3
|
+
import {Ido, IdoConfig} from "@getui/ido"
|
|
4
|
+
import { common } from '@kit.AbilityKit';
|
|
5
|
+
import { RNOHContext, UITurboModuleContext } from '@rnoh/react-native-openharmony/src/main/ets/RNOH/ts';
|
|
6
|
+
import hilog from '@ohos.hilog';
|
|
7
|
+
|
|
8
|
+
export class IdoModule extends UITurboModule{
|
|
9
|
+
protected _context: common.UIAbilityContext;
|
|
10
|
+
protected _RnContext: RNOHContext;
|
|
11
|
+
protected gtcId: string = '';
|
|
12
|
+
|
|
13
|
+
constructor(ctx: UITurboModuleContext) {
|
|
14
|
+
super(ctx);
|
|
15
|
+
this._context = ctx?.uiAbilityContext;
|
|
16
|
+
this._RnContext = ctx;
|
|
17
|
+
}
|
|
18
|
+
version(cb: (param: string) => void): void{
|
|
19
|
+
cb(Ido.getVersion())
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
startSdk(appid: string, channel: string): void{
|
|
23
|
+
IdoConfig.setAppId(appid)
|
|
24
|
+
IdoConfig.setChannel(channel)
|
|
25
|
+
Ido.preInit(this._context)
|
|
26
|
+
Ido.init(this._context).then((gtcId) => {
|
|
27
|
+
this. gtcId = gtcId
|
|
28
|
+
hilog.info(0x0000, 'IdoModule', 'IDO init Succeeded. GtcId: (%{public}s)', gtcId);
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
gtcid(cb: (param: string) => void): void{
|
|
33
|
+
cb(this.gtcId)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
setDebugEnable(isEnable: boolean): void{
|
|
37
|
+
IdoConfig.setDebugEnable(isEnable)
|
|
38
|
+
// IdoConfig.setDebugEnable(6)
|
|
39
|
+
hilog.info(0x0000, 'IdoModule', `setDebugEnable ${isEnable}`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
setSessionTime(time: number): void{
|
|
43
|
+
IdoConfig.setSessionTimeoutMillis(time)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
setMinAppActiveDuration(val: number): void{
|
|
47
|
+
IdoConfig.setMinAppActiveDuration(val)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
setMaxAppActiveDuration(val: number): void{
|
|
51
|
+
IdoConfig.setMaxAppActiveDuration(val)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
setEventUploadInterval(val: number): void{
|
|
55
|
+
IdoConfig.setEventUploadInterval(val)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
setEventForceUploadSize(val: number): void{
|
|
59
|
+
IdoConfig.setEventForceUploadSize(val)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
setProfileUploadInterval(val: number): void{
|
|
63
|
+
IdoConfig.setProfileUploadInterval(val)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
setProfileForceUploadSize(val: number): void{
|
|
67
|
+
IdoConfig.setProfileForceUploadSize(val)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
setUserId(val: string): void{
|
|
71
|
+
Ido.setUserId(val)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
trackCustomKeyValueEventBegin(eventId: string): void{
|
|
75
|
+
Ido.onBeginEvent(eventId)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
trackCustomKeyValueEventEnd(eventId: string, args: Object, ext: string): void{
|
|
79
|
+
|
|
80
|
+
// 转换前打印原始对象
|
|
81
|
+
hilog.info(0x0000, 'IdoModule', `trackCustomKeyValueEventEnd ${JSON.stringify(args, null, 2)}`);
|
|
82
|
+
// 将 Object 转换为 Map
|
|
83
|
+
const profileMap: Map<string, string | number | Date | boolean> = new Map(
|
|
84
|
+
Object.entries(args).map((entry:[string,object]) => {
|
|
85
|
+
const key = entry[0] as string; // 显式类型断言
|
|
86
|
+
const value = entry[1] as string | number | Date | boolean;
|
|
87
|
+
return [key, value];
|
|
88
|
+
})
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
// 转换后打印 Map 内容
|
|
93
|
+
|
|
94
|
+
hilog.info(0x0000, 'IdoModule', '转换后的 Map 内容:');
|
|
95
|
+
profileMap.forEach((value, key) => {
|
|
96
|
+
hilog.info(0x0000, 'IdoModule',`Key: ${key}, Value: ${value} (${typeof value})`);
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
Ido.onEndEvent(eventId,profileMap,ext)
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
trackCountEvent(eventId: string, args: Object, ext: string): void{
|
|
104
|
+
|
|
105
|
+
// 转换前打印原始对象
|
|
106
|
+
hilog.info(0x0000, 'IdoModule', `trackCountEvent ${JSON.stringify(args, null, 2)}`);
|
|
107
|
+
// 将 Object 转换为 Map
|
|
108
|
+
const profileMap: Map<string, string | number | Date | boolean> = new Map(
|
|
109
|
+
Object.entries(args).map((entry:[string,object]) => {
|
|
110
|
+
const key = entry[0] as string; // 显式类型断言
|
|
111
|
+
const value = entry[1] as string | number | Date | boolean;
|
|
112
|
+
return [key, value];
|
|
113
|
+
})
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
// 转换后打印 Map 内容
|
|
117
|
+
hilog.info(0x0000, 'IdoModule', '转换后的 Map 内容:');
|
|
118
|
+
profileMap.forEach((value, key) => {
|
|
119
|
+
hilog.info(0x0000, 'IdoModule',`Key: ${key}, Value: ${value} (${typeof value})`);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
Ido.onEvent(eventId,profileMap,ext)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
setProfile(profiles: Object, ext: string): void{
|
|
126
|
+
// 转换前打印原始对象
|
|
127
|
+
hilog.info(0x0000, 'IdoModule', `setProfile ${JSON.stringify(profiles, null, 2)}`);
|
|
128
|
+
|
|
129
|
+
// 将 Object 转换为 Map
|
|
130
|
+
const profileMap: Map<string, string | number | Date | boolean> = new Map(
|
|
131
|
+
Object.entries(profiles).map((entry:[string,object]) => {
|
|
132
|
+
const key = entry[0] as string; // 显式类型断言
|
|
133
|
+
const value = entry[1] as string | number | Date | boolean;
|
|
134
|
+
return [key, value];
|
|
135
|
+
})
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
// 转换后打印 Map 内容
|
|
139
|
+
hilog.info(0x0000, 'IdoModule', '转换后的 Map 内容:');
|
|
140
|
+
profileMap.forEach((value, key) => {
|
|
141
|
+
hilog.info(0x0000, 'IdoModule',`Key: ${key}, Value: ${value} (${typeof value})`);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
// 调用原方法
|
|
146
|
+
Ido.onProfile(profileMap, ext);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
}
|
|
150
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// entry/src/main/ets/GeneratedPackage.ets
|
|
2
|
+
import {
|
|
3
|
+
RNOHPackage,
|
|
4
|
+
AnyThreadTurboModule,
|
|
5
|
+
AnyThreadTurboModuleContext,
|
|
6
|
+
UITurboModule,
|
|
7
|
+
UITurboModuleContext
|
|
8
|
+
} from '@rnoh/react-native-openharmony';
|
|
9
|
+
|
|
10
|
+
import { IdoModule } from './IdoModule';
|
|
11
|
+
|
|
12
|
+
export class IdoPackage extends RNOHPackage {
|
|
13
|
+
override getUITurboModuleFactoryByNameMap(): Map<string, (ctx: UITurboModuleContext) => UITurboModule | null> {
|
|
14
|
+
return new Map<string, ((ctx: UITurboModuleContext) => UITurboModule)>()
|
|
15
|
+
.set("IdoModule", (ctx) => new IdoModule(ctx))
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
override async createEagerUITurboModuleByNameMap(ctx: UITurboModuleContext): Promise<Map<string, UITurboModule>> {
|
|
20
|
+
const calculatorModule = new IdoModule(ctx);
|
|
21
|
+
return new Map()
|
|
22
|
+
.set("IdoModule", calculatorModule)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gt-ido-ohos-plugin",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "ido for ohos",
|
|
5
|
+
"main": "index.ts",
|
|
6
|
+
"keywords": [],
|
|
7
|
+
"author": "yangshgetui",
|
|
8
|
+
"license": "ISC",
|
|
9
|
+
"harmony": {
|
|
10
|
+
"alias": "gt-ido-ohos-plugin",
|
|
11
|
+
"codegenConfig": [
|
|
12
|
+
{
|
|
13
|
+
"version": 1,
|
|
14
|
+
"specPaths": [
|
|
15
|
+
"./src/specs/v1"
|
|
16
|
+
],
|
|
17
|
+
"des": "version:表示版本,需要强调一下,这里的版本并没有新旧之说,它们只是使用场景不同而已。\"version\": 1 适用于创建 TurboModule 或者是 ArkTS 组件的场景;\n\"version\": 2 则适用于创建 CAPI 组件的场景。"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"index.ts",
|
|
23
|
+
"src/*",
|
|
24
|
+
"harmony"
|
|
25
|
+
],
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"react": "*",
|
|
28
|
+
"react-native": "*"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/react": "^18.2.47",
|
|
32
|
+
"react": "18.2.0",
|
|
33
|
+
"react-native": "0.72.5"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// NativeCalculator.ts
|
|
2
|
+
import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';
|
|
3
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export interface Spec extends TurboModule {
|
|
7
|
+
|
|
8
|
+
startSdk(appid: string, channel: string): void;
|
|
9
|
+
|
|
10
|
+
gtcid(cb: (param: string) => void): void;
|
|
11
|
+
|
|
12
|
+
version(cb: (param: string) => void): void;
|
|
13
|
+
|
|
14
|
+
setDebugEnable(isEnable: boolean): void;
|
|
15
|
+
|
|
16
|
+
setSessionTime(time: number): void;
|
|
17
|
+
|
|
18
|
+
setMinAppActiveDuration(val: number): void;
|
|
19
|
+
|
|
20
|
+
setMaxAppActiveDuration(val: number): void;
|
|
21
|
+
|
|
22
|
+
setEventUploadInterval(val: number): void;
|
|
23
|
+
|
|
24
|
+
setEventForceUploadSize(val: number): void;
|
|
25
|
+
|
|
26
|
+
setProfileUploadInterval(val: number): void;
|
|
27
|
+
|
|
28
|
+
setProfileForceUploadSize(val: number): void;
|
|
29
|
+
|
|
30
|
+
setUserId(val: string): void;
|
|
31
|
+
|
|
32
|
+
trackCustomKeyValueEventBegin(eventId: string): void;
|
|
33
|
+
|
|
34
|
+
trackCustomKeyValueEventEnd(eventId: string, args:{[key: string]: string|number|boolean}, ext: string): void;
|
|
35
|
+
|
|
36
|
+
trackCountEvent(eventId: string, args:{[key: string]: string|number|boolean}, ext: string): void;
|
|
37
|
+
|
|
38
|
+
setProfile(profiles: {[key: string]: string|number|boolean}, ext: string): void;
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export default TurboModuleRegistry.get<Spec>(
|
|
43
|
+
'IdoModule',
|
|
44
|
+
) as Spec | null;
|
|
Binary file
|
|
Binary file
|