@react-native-ohos/react-native-default-preference 1.6.0-beta.1 → 1.6.0-beta.2

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +37 -8
  2. package/COMMITTERS.md +8 -7
  3. package/LICENSE +21 -21
  4. package/OAT.xml +74 -68
  5. package/README.OpenSource +10 -10
  6. package/README.md +248 -13
  7. package/README_EN.md +241 -0
  8. package/flow-typed/index.js +23 -23
  9. package/harmony/react_native_default_preference/BuildProfile.ets +16 -16
  10. package/harmony/react_native_default_preference/Index.ets +7 -7
  11. package/harmony/react_native_default_preference/build-profile.json5 +25 -25
  12. package/harmony/react_native_default_preference/hvigorfile.ts +6 -6
  13. package/harmony/react_native_default_preference/obfuscation-rules.txt +17 -17
  14. package/harmony/react_native_default_preference/oh-package.json5 +12 -12
  15. package/harmony/react_native_default_preference/src/main/cpp/CMakeLists.txt +8 -8
  16. package/harmony/react_native_default_preference/src/main/cpp/DefaultPreferencePackage.h +18 -18
  17. package/harmony/react_native_default_preference/src/main/cpp/generated/RNOH/generated/BaseReactNativeDefaultPreferencePackage.h +72 -72
  18. package/harmony/react_native_default_preference/src/main/cpp/generated/RNOH/generated/turbo_modules/DefaultPreferenceNativeModule.cpp +25 -25
  19. package/harmony/react_native_default_preference/src/main/cpp/generated/RNOH/generated/turbo_modules/DefaultPreferenceNativeModule.h +16 -16
  20. package/harmony/react_native_default_preference/src/main/cpp/generated/react/renderer/components/react_native_default_preference/ComponentDescriptors.h +24 -24
  21. package/harmony/react_native_default_preference/src/main/cpp/generated/react/renderer/components/react_native_default_preference/EventEmitters.cpp +16 -16
  22. package/harmony/react_native_default_preference/src/main/cpp/generated/react/renderer/components/react_native_default_preference/EventEmitters.h +17 -17
  23. package/harmony/react_native_default_preference/src/main/cpp/generated/react/renderer/components/react_native_default_preference/Props.cpp +19 -19
  24. package/harmony/react_native_default_preference/src/main/cpp/generated/react/renderer/components/react_native_default_preference/Props.h +18 -18
  25. package/harmony/react_native_default_preference/src/main/cpp/generated/react/renderer/components/react_native_default_preference/ShadowNodes.cpp +17 -17
  26. package/harmony/react_native_default_preference/src/main/cpp/generated/react/renderer/components/react_native_default_preference/ShadowNodes.h +23 -23
  27. package/harmony/react_native_default_preference/src/main/cpp/generated/react/renderer/components/react_native_default_preference/States.cpp +16 -16
  28. package/harmony/react_native_default_preference/src/main/cpp/generated/react/renderer/components/react_native_default_preference/States.h +18 -18
  29. package/harmony/react_native_default_preference/src/main/ets/Logger.ts +45 -45
  30. package/harmony/react_native_default_preference/src/main/ets/RNDefaultPreferencePackage.ets +28 -28
  31. package/harmony/react_native_default_preference/src/main/ets/RNDefaultPreferenceTurboModule.ts +184 -144
  32. package/harmony/react_native_default_preference/src/main/ets/generated/components/ts.ts +5 -5
  33. package/harmony/react_native_default_preference/src/main/ets/generated/index.ets +5 -5
  34. package/harmony/react_native_default_preference/src/main/ets/generated/ts.ts +6 -6
  35. package/harmony/react_native_default_preference/src/main/ets/generated/turboModules/DefaultPreferenceNativeModule.ts +32 -32
  36. package/harmony/react_native_default_preference/src/main/ets/generated/turboModules/ts.ts +5 -5
  37. package/harmony/react_native_default_preference/src/main/ets/pages/Index.ets +22 -22
  38. package/harmony/react_native_default_preference/src/main/ets/utils/Calc.ets +8 -8
  39. package/harmony/react_native_default_preference/src/main/module.json5 +10 -10
  40. package/harmony/react_native_default_preference/src/main/resources/base/element/string.json +7 -7
  41. package/harmony/react_native_default_preference/ts.ets +7 -7
  42. package/harmony/react_native_default_preference/ts.ts +8 -0
  43. package/harmony/react_native_default_preference.har +0 -0
  44. package/index.d.ts +19 -19
  45. package/index.js +12 -12
  46. package/package.json +52 -41
  47. package/src/NativeDefaultPreference.ts +21 -21
  48. package/RNDefaultPreference.podspec +0 -22
package/CHANGELOG.md CHANGED
@@ -1,8 +1,37 @@
1
- # v1.6.0-beta.1
2
- ## 更新内容
3
- * 增加82版本适配的autolinking
4
-
5
- # v1.4.5-rc.1
6
- ## 更新内容
7
- * 修改组织名为@react-native-ohos
8
- * 内置Codegen生成代码
1
+ # CHANGELOG
2
+
3
+
4
+ ## [1.6.0-beta.2] - 2026-09
5
+
6
+ ### Fixed
7
+
8
+ - Fix Harmony `get` returning `'default'` for missing keys; now returns `null` to match Android/iOS ([#23](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pull/23))
9
+ - Fix `set` / `clear` / `clearAll` / `setMultiple` / `clearMultiple` / `setName` Promises never resolving ([#23](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pull/23))
10
+ - Fix missing `flush` after `clear` / `clearAll`, which could prevent persistence ([#23](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pull/23))
11
+ - Fix `clear` / `clearMultiple` not re-fetching the Preferences instance after `setName` ([#23](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pull/23))
12
+ - Fix `getAll` returning a key array instead of a `{ [key: string]: string }` object ([#23](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pull/23))
13
+ - Fix `getName` default value to use `bundleName_preferences` (aligned with Android) ([#23](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pull/23))
14
+ - Fix hung Promises on error paths in `get` / `getAll`
15
+
16
+ ### Changed
17
+
18
+ - **Breaking (Harmony):** `getAll` now returns a key-value object instead of `string[]` ([#23](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pull/23))
19
+ - **Breaking (Harmony):** missing keys in `get` / `getMultiple` now return `null` instead of `'default'` ([#23](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pull/23))
20
+ - **Breaking (Harmony):** default Preferences name changed from `'defultName'` to `bundleName_preferences` ([#23](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pull/23))
21
+
22
+ ### Added
23
+
24
+ - Add example gate project with rnt demo and Harmony shell
25
+
26
+ ## [1.6.0-beta.1] - 2026-05-14
27
+
28
+ ### Added
29
+
30
+ - Autolinking support for RNOH 0.82
31
+
32
+ ## [1.4.5-rc.1] - 2026-04-13
33
+
34
+ ### Changed
35
+
36
+ - Rename npm scope to `@react-native-ohos`
37
+ - Bundle Codegen-generated bridge code in the repository
package/COMMITTERS.md CHANGED
@@ -1,7 +1,8 @@
1
- ## Committers列表
2
-
3
- ### 以下是此项目的committer人员
4
-
5
- 不区分先后顺序
6
-
7
- - [xiafeng_xf_admin](https://gitee.com/xiafeng_xf_admin)
1
+ ## Committers列表
2
+
3
+ ### 以下是此项目的committer人员
4
+
5
+ 不区分先后顺序
6
+
7
+ [zhu_chengcheng](https://gitcode.com/zhu_chengcheng)
8
+ [huang_jy](https://gitcode.com/gcw_N7oHqLFR)
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2017 Kevin Leung
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2017 Kevin Leung
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/OAT.xml CHANGED
@@ -1,69 +1,75 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!-- Copyright (c) 2021 Huawei Device Co., Ltd.
3
- Licensed under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License.
5
- You may obtain a copy of the License at
6
- http://www.apache.org/licenses/LICENSE-2.0
7
- Unless required by applicable law or agreed to in writing, software
8
- distributed under the License is distributed on an "AS IS" BASIS,
9
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- See the License for the specific language governing permissions and
11
- limitations under the License.
12
- This is the configuration file template for OpenHarmony OSS Audit Tool, please copy it to your project root dir and modify it refer to OpenHarmony/tools_oat/README.
13
- -->
14
-
15
- <configuration>
16
- <oatconfig>
17
- <licensefile>LICENSE</licensefile>
18
- <policylist>
19
- <policy name="projectPolicy" desc="">
20
- <policyitem type="license" name="MIT" path=".*" desc="license under the MIT"/>
21
- </policy>
22
- <policy name="projectPolicy" desc="">
23
- <policyitem type="compatibility" name="GPL-2.0+" path=".*" desc="Process that runs independently, invoked by the X process."/>
24
- <policyitem type="compatibility" name="Apache-2.0" path=".*" desc="不影响兼容性"/>
25
- <policyitem type="compatibility" name="BSDStyleLicense" path=".*" desc="不影响兼容性" />
26
- <policyitem type="compatibility" name="MIT" path=".*" desc="不影响兼容性" />
27
- <policyitem type="compatibility" name="GPLStyleLicense" path=".*" desc="不影响兼容性" />
28
- </policy>
29
- </policylist>
30
- <filefilterlist>
31
- <filefilter name="defaultFilter" desc="Files not to check">
32
-
33
- </filefilter>
34
- <filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies">
35
- <filteritem type="filename" name="LICENSE" desc="许可证说明文件,不添加版权头"/>
36
- <filteritem type="filename" name="RNDefaultPreference.podspec" desc="工程配置文件,不添加版权头"/>
37
- <filteritem type="filename" name="README.OpenSource" desc="许可证说明文件,不添加版权头"/>
38
- <filteritem type="filename" name="index.d.ts" desc="需要引用的原库文件,不添加许可证头"/>
39
- <filteritem type="filename" name="index.js" desc="需要引用的原库文件,不添加许可证头"/>
40
- <filteritem type="filepath" name="flow-typed/index.js" desc="需要引用的原库文件,不添加许可证头"/>
41
- <filteritem type="filepath" name="harmony/react_native_default_preference/src/main/module.json5" desc="工程配置文件,不添加许可证头"/>
42
- <filteritem type="filepath" name="harmony/react_native_default_preference/BuildProfile.ets" desc="工程配置文件,不添加许可证头"/>
43
- <filteritem type="filepath" name="harmony/react_native_default_preference/build-profile.json5" desc="工程配置文件,不添加许可证头"/>
44
- <filteritem type="filepath" name="harmony/react_native_default_preference/hvigorfile.ts" desc="工程配置文件,不添加许可证头"/>
45
- <filteritem type="filepath" name="harmony/react_native_default_preference/oh-package-lock.json5" desc="工程配置文件,不添加许可证头"/>
46
- <filteritem type="filepath" name="harmony/react_native_default_preference/oh-package.json5" desc="工程配置文件,不添加许可证头"/>
47
-
48
- </filefilter>
49
- <filefilter name="binaryFileTypePolicyFilter" desc="Filters for copyright header policies">
50
- <filteritem type="filepath" name="harmony/react_native_default_preference.har" desc="项目打包文件"/>
51
- </filefilter>
52
-
53
- <filefilter name="copyrightPolicyFilter" desc="Filters for copyright header policies">
54
- <filteritem type="filename" name="RNDefaultPreference.podspec" desc="工程配置文件,不添加版权头"/>
55
- <filteritem type="filename" name="README.OpenSource" desc="许可证说明文件,不添加版权头"/>
56
- <filteritem type="filename" name="index.d.ts" desc="需要引用的原库文件,不添加许可证头"/>
57
- <filteritem type="filename" name="index.js" desc="需要引用的原库文件,不添加许可证头"/>
58
- <filteritem type="filepath" name="flow-typed/index.js" desc="需要引用的原库文件,不添加许可证头"/>
59
- <filteritem type="filepath" name="harmony/react_native_default_preference/src/main/module.json5" desc="工程配置文件,不添加许可证头"/>
60
- <filteritem type="filepath" name="harmony/react_native_default_preference/BuildProfile.ets" desc="工程配置文件,不添加许可证头"/>
61
- <filteritem type="filepath" name="harmony/react_native_default_preference/build-profile.json5" desc="工程配置文件,不添加许可证头"/>
62
- <filteritem type="filepath" name="harmony/react_native_default_preference/hvigorfile.ts" desc="工程配置文件,不添加许可证头"/>
63
- <filteritem type="filepath" name="harmony/react_native_default_preference/oh-package-lock.json5" desc="工程配置文件,不添加许可证头"/>
64
- <filteritem type="filepath" name="harmony/react_native_default_preference/oh-package.json5" desc="工程配置文件,不添加许可证头"/>
65
-
66
- </filefilter>
67
- </filefilterlist>
68
- </oatconfig>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Copyright (c) 2021 Huawei Device Co., Ltd.
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+ http://www.apache.org/licenses/LICENSE-2.0
7
+ Unless required by applicable law or agreed to in writing, software
8
+ distributed under the License is distributed on an "AS IS" BASIS,
9
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ See the License for the specific language governing permissions and
11
+ limitations under the License.
12
+ This is the configuration file template for OpenHarmony OSS Audit Tool, please copy it to your project root dir and modify it refer to OpenHarmony/tools_oat/README.
13
+ -->
14
+
15
+ <configuration>
16
+ <oatconfig>
17
+ <licensefile>LICENSE</licensefile>
18
+ <policylist>
19
+ <policy name="projectPolicy" desc="">
20
+ <policyitem type="license" name="MIT" path=".*" desc="license under the MIT"/>
21
+ </policy>
22
+ <policy name="projectPolicy" desc="">
23
+ <policyitem type="compatibility" name="GPL-2.0+" path=".*" desc="Process that runs independently, invoked by the X process."/>
24
+ <policyitem type="compatibility" name="Apache-2.0" path=".*" desc="不影响兼容性"/>
25
+ <policyitem type="compatibility" name="BSDStyleLicense" path=".*" desc="不影响兼容性" />
26
+ <policyitem type="compatibility" name="MIT" path=".*" desc="不影响兼容性" />
27
+ <policyitem type="compatibility" name="GPLStyleLicense" path=".*" desc="不影响兼容性" />
28
+ </policy>
29
+ </policylist>
30
+ <filefilterlist>
31
+ <filefilter name="defaultFilter" desc="Files not to check">
32
+
33
+ </filefilter>
34
+ <filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies">
35
+ <filteritem type="filename" name="LICENSE" desc="许可证说明文件,不添加版权头"/>
36
+ <filteritem type="filename" name="RNDefaultPreference.podspec" desc="工程配置文件,不添加版权头"/>
37
+ <filteritem type="filename" name="README.OpenSource" desc="许可证说明文件,不添加版权头"/>
38
+ <filteritem type="filename" name="index.d.ts" desc="需要引用的原库文件,不添加许可证头"/>
39
+ <filteritem type="filename" name="index.js" desc="需要引用的原库文件,不添加许可证头"/>
40
+ <filteritem type="filepath" name="flow-typed/index.js" desc="需要引用的原库文件,不添加许可证头"/>
41
+ <filteritem type="filepath" name="harmony/react_native_default_preference/src/main/module.json5" desc="工程配置文件,不添加许可证头"/>
42
+ <filteritem type="filepath" name="harmony/react_native_default_preference/BuildProfile.ets" desc="工程配置文件,不添加许可证头"/>
43
+ <filteritem type="filepath" name="harmony/react_native_default_preference/build-profile.json5" desc="工程配置文件,不添加许可证头"/>
44
+ <filteritem type="filepath" name="harmony/react_native_default_preference/hvigorfile.ts" desc="工程配置文件,不添加许可证头"/>
45
+ <filteritem type="filepath" name="harmony/react_native_default_preference/oh-package-lock.json5" desc="工程配置文件,不添加许可证头"/>
46
+ <filteritem type="filepath" name="harmony/react_native_default_preference/oh-package.json5" desc="工程配置文件,不添加许可证头"/>
47
+ <filteritem type="filepath" name="example/*.*" desc="demo工程,不添加许可证头"/>
48
+ </filefilter>
49
+ <filefilter name="binaryFileTypePolicyFilter" desc="Filters for copyright header policies">
50
+ <filteritem type="filepath" name="harmony/react_native_default_preference.har" desc="项目打包文件"/>
51
+ <filteritem type="filepath" name="example/harmony/entry/src/main/resources/base/media/icon.png" desc="项目资源文件"/>
52
+ <filteritem type="filepath" name="example/rnoh-testerino-0.0.12.tgz" desc="项目资源文件"/>
53
+ <filteritem type="filepath" name="example/harmony/AppScope/resources/base/media/app_icon.png" desc="项目资源文件"/>
54
+
55
+
56
+
57
+ </filefilter>
58
+
59
+ <filefilter name="copyrightPolicyFilter" desc="Filters for copyright header policies">
60
+ <filteritem type="filename" name="RNDefaultPreference.podspec" desc="工程配置文件,不添加版权头"/>
61
+ <filteritem type="filename" name="README.OpenSource" desc="许可证说明文件,不添加版权头"/>
62
+ <filteritem type="filename" name="index.d.ts" desc="需要引用的原库文件,不添加许可证头"/>
63
+ <filteritem type="filename" name="index.js" desc="需要引用的原库文件,不添加许可证头"/>
64
+ <filteritem type="filepath" name="flow-typed/index.js" desc="需要引用的原库文件,不添加许可证头"/>
65
+ <filteritem type="filepath" name="harmony/react_native_default_preference/src/main/module.json5" desc="工程配置文件,不添加许可证头"/>
66
+ <filteritem type="filepath" name="harmony/react_native_default_preference/BuildProfile.ets" desc="工程配置文件,不添加许可证头"/>
67
+ <filteritem type="filepath" name="harmony/react_native_default_preference/build-profile.json5" desc="工程配置文件,不添加许可证头"/>
68
+ <filteritem type="filepath" name="harmony/react_native_default_preference/hvigorfile.ts" desc="工程配置文件,不添加许可证头"/>
69
+ <filteritem type="filepath" name="harmony/react_native_default_preference/oh-package-lock.json5" desc="工程配置文件,不添加许可证头"/>
70
+ <filteritem type="filepath" name="harmony/react_native_default_preference/oh-package.json5" desc="工程配置文件,不添加许可证头"/>
71
+ <filteritem type="filepath" name="example/*.*" desc="demo工程,不添加许可证头"/>
72
+ </filefilter>
73
+ </filefilterlist>
74
+ </oatconfig>
69
75
  </configuration>
package/README.OpenSource CHANGED
@@ -1,11 +1,11 @@
1
- [
2
- {
3
- "Name": "react-native-default-preference",
4
- "License": "MIT License",
5
- "License File": "https://github.com/kevinresol/react-native-default-preference/blob/master/LICENSE",
6
- "Version Number": "1.4.4",
7
- "Owner" : "xiafeng@huawei.com",
8
- "Upstream URL": "https://github.com/kevinresol/react-native-default-preference",
9
- "Description": "Use SharedPreference (Android) and UserDefaults (iOS) with React Native over a unified interface"
10
- }
1
+ [
2
+ {
3
+ "Name": "react-native-default-preference",
4
+ "License": "MIT License",
5
+ "License File": "https://github.com/kevinresol/react-native-default-preference/blob/master/LICENSE",
6
+ "Version Number": "1.4.4",
7
+ "Owner" : "xiafeng@huawei.com",
8
+ "Upstream URL": "https://github.com/kevinresol/react-native-default-preference",
9
+ "Description": "Use SharedPreference (Android) and UserDefaults (iOS) with React Native over a unified interface"
10
+ }
11
11
  ]
package/README.md CHANGED
@@ -1,13 +1,248 @@
1
- # @react-native-ohos/react-native-default-preference
2
-
3
- This project is based on [react-native-default-preference](https://github.com/kevinresol/react-native-default-preference)
4
-
5
- ## Documentation
6
-
7
- [中文](https://gitcode.com/OpenHarmony-RN/usage-docs/blob/master/zh-cn/react-native-default-preference.md)
8
-
9
- [English](https://gitcode.com/OpenHarmony-RN/usage-docs/blob/master/en/react-native-default-preference.md)
10
-
11
- ## License
12
-
13
- This library is licensed under [The MIT License (MIT)](https://github.com/kevinresol/react-native-default-preference/blob/master/LICENSE).
1
+ > 文档模板:v0.4.2
2
+
3
+ <p align="center">
4
+ <h1 align="center"> <code>react-native-default-preference</code> </h1>
5
+ </p>
6
+
7
+ 本项目基于 [react-native-default-preference](https://github.com/kevinresol/react-native-default-preference) 开发。
8
+
9
+ 该第三方库的仓库已迁移至 Gitcode,且支持直接从 npm 下载,新的包名为:`@react-native-ohos/react-native-default-preference`。版本所属关系如下:
10
+
11
+ | 三方库名称 | 三方库版本(npm地址) | 发布信息 | 支持RN版本 | Autolink | 编译API版本 | 社区基线版本 | 源码地址 |
12
+ | ------------ | ------------ | ------------------------------ | ------------- | ------------- |------------------------ | ------------- | ------------- |
13
+ | @react-native-ohos/react-native-default-preference | [~ 1.6.0](https://www.npmjs.com/package/@react-native-ohos/react-native-default-preference) | [Gitcode Releases](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/releases) | 0.82.* / 0.77.* / 0.72.* | partially | API12+ | 1.4.4 | [master](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/tree/master) |
14
+ | @react-native-oh-tpl/react-native-default-preference | [<= 1.4.4-0.0.1@deprecated](https://www.npmjs.com/package/@react-native-oh-tpl/react-native-default-preference) | [Github Releases(deprecated)](https://github.com/react-native-oh-library/react-native-default-preference/releases) | 0.72.* | 否 | API12+ | 1.4.4 | [sig](https://github.com/react-native-oh-library/react-native-default-preference) |
15
+
16
+
17
+ ## 简介
18
+
19
+ 本库在 React Native 中提供统一接口,用于读写 Android `SharedPreferences`、iOS `UserDefaults` 以及 HarmonyOS `@ohos.data.preferences` 用户首选项。
20
+
21
+ 所有数据均以字符串形式存储。如需存储复杂数据结构,请自行序列化/反序列化(例如 JSON)。
22
+
23
+ ## 下载安装
24
+
25
+ 进入到工程目录并输入以下命令:
26
+
27
+ **npm**
28
+
29
+ ```bash
30
+ npm install @react-native-ohos/react-native-default-preference
31
+ ```
32
+
33
+ **yarn**
34
+
35
+ ```bash
36
+ yarn add @react-native-ohos/react-native-default-preference
37
+ ```
38
+
39
+ ## Link
40
+
41
+ | | 是否支持autolink | RN框架版本 |
42
+ |--------------------------------------|----------------|-----------|
43
+ | ~ 1.6.0 | partially | 0.82 / 0.77 / 0.72 |
44
+
45
+
46
+ 使用 AutoLink 的工程需要根据 [Autolink 框架指导文档](https://gitcode.com/CPF-RN/ohos_react_native/blob/master/docs/zh-cn/Autolinking.md) 配置。
47
+
48
+ <details>
49
+ <summary>ManualLink: 此步骤为手动配置原生依赖项的指导</summary>
50
+
51
+ 首先需要使用 DevEco Studio 打开项目里的 HarmonyOS 工程 `harmony`。
52
+
53
+ ### 1. Overrides RN SDK
54
+
55
+ 为了让工程依赖同一个版本的 RN SDK,需要在工程根目录的 `oh-package.json5` 添加 overrides 字段,指向工程需要使用的 RN SDK 版本。
56
+
57
+ ```json
58
+ {
59
+ "overrides": {
60
+ "@rnoh/react-native-openharmony": "~0.82.1"
61
+ }
62
+ }
63
+ ```
64
+
65
+ ### 2. 引入原生端代码
66
+
67
+ 目前有两种方法:
68
+
69
+ - 通过 har 包引入(推荐);
70
+ - 直接链接源码。
71
+
72
+ 方法一:通过 har 包引入(推荐)
73
+
74
+ > [!TIP] har 包位于三方库安装路径的 `harmony` 文件夹下。
75
+
76
+ 打开 `entry/oh-package.json5`,添加以下依赖:
77
+
78
+ ```json
79
+ "dependencies": {
80
+ "@react-native-ohos/react-native-default-preference": "file:../../node_modules/@react-native-ohos/react-native-default-preference/harmony/react_native_default_preference.har"
81
+ }
82
+ ```
83
+
84
+ 方法二:直接链接源码
85
+
86
+ > [!TIP] 如需使用直接链接源码,请参考[直接链接源码说明](https://gitcode.com/CPF-RN/usage-docs/blob/master/zh-cn/link-source-code.md)
87
+
88
+ ### 3. 配置 CMakeLists 和引入 DefaultPreferencePackage
89
+
90
+ 打开 `entry/src/main/cpp/CMakeLists.txt`,添加:
91
+
92
+ ```diff
93
+ + set(OH_MODULES "${CMAKE_CURRENT_SOURCE_DIR}/../../../oh_modules")
94
+ + add_subdirectory("${OH_MODULES}/@react-native-ohos/react-native-default-preference/src/main/cpp" ./default_preference)
95
+ + target_link_libraries(rnoh_app PUBLIC rnoh_default_preference)
96
+ ```
97
+
98
+ 打开 `entry/src/main/cpp/PackageProvider.cpp`,添加:
99
+
100
+ ```diff
101
+ + #include "DefaultPreferencePackage.h"
102
+ + std::make_shared<DefaultPreferencePackage>(ctx)
103
+ ```
104
+
105
+ ### 4. 在 ArkTs 侧引入 RNDefaultPreferencePackage
106
+
107
+ 打开 `entry/src/main/ets/RNPackagesFactory.ts`,添加:
108
+
109
+ ```diff
110
+ + import { RNDefaultPreferencePackage } from '@react-native-ohos/react-native-default-preference/ts';
111
+
112
+ export function createRNPackages(ctx: RNPackageContext): RNPackage[] {
113
+ return [
114
+ + new RNDefaultPreferencePackage(ctx)
115
+ ];
116
+ }
117
+ ```
118
+
119
+ </details>
120
+
121
+ ### 运行
122
+
123
+ 点击右上角的 `sync` 按钮,或者在命令行终端执行:
124
+
125
+ ```bash
126
+ cd entry
127
+ ohpm install
128
+ ```
129
+
130
+ 然后编译、运行即可。
131
+
132
+ ## 约束与限制
133
+
134
+ ### 兼容性
135
+
136
+ 本文档内容基于以下版本验证通过:
137
+
138
+ 1. RNOH: 0.72.96; SDK: HarmonyOS 6.0.0 Release SDK; IDE: DevEco Studio 6.0.0.858; ROM: 6.0.0.112;
139
+ 3. RNOH: 0.77.18; SDK: HarmonyOS 6.0.0 Release SDK; IDE: DevEco Studio 6.0.0.858; ROM: 6.0.0.112;
140
+ 4. RNOH: 0.82.1; SDK: HarmonyOS 6.0.1 Release SDK; IDE: DevEco Studio 6.0.1 Release; ROM: 6.0.0.120 SP7;
141
+
142
+ > [!TIP] 当前三方库所有版本均已实现版本隔离,支持在 `API12+` 工程编译,及 `API12+` ROM 运行。
143
+
144
+ ## 使用示例
145
+
146
+ 下面的代码展示了这个库的基本使用场景:
147
+
148
+ > [!WARNING] 使用时 import 的库名不变。
149
+
150
+ ```javascript
151
+ import DefaultPreference from 'react-native-default-preference';
152
+
153
+ DefaultPreference.get('my key').then((value) => {
154
+ console.log(value);
155
+ });
156
+
157
+ DefaultPreference.set('my key', 'my value').then(() => {
158
+ console.log('done');
159
+ });
160
+ ```
161
+
162
+ ## 使用说明
163
+
164
+ **Preferences 文件名称**
165
+
166
+ - Android 默认使用 `包名_preferences`
167
+ - HarmonyOS 默认使用 `bundleName_preferences`(与 Android 对齐)
168
+ - 可通过 `setName` / `getName` 切换存储实例名称
169
+
170
+ **Cordova Native Storage 兼容**
171
+
172
+ 与 cordova-plugin-native-storage 兼容时,Android 需设置相同 SharedPreferences 名称:
173
+
174
+ ```javascript
175
+ import { Platform } from 'react-native';
176
+ import DefaultPreference from 'react-native-default-preference';
177
+
178
+ if (Platform.OS === 'android') {
179
+ DefaultPreference.setName('NativeStorage');
180
+ }
181
+ ```
182
+
183
+ 本库已内置 Codegen 生成代码(`harmony/react_native_default_preference/src/main/ets/generated` 与 `src/main/cpp/generated`)。一般无需手动生成;如需重新生成,可在库根目录执行:
184
+
185
+ ```bash
186
+ npm run codegen-lib
187
+ ```
188
+
189
+ ## 接口说明
190
+
191
+ > [!TIP] "Platform" 列表示该接口在原三方库上支持的平台。
192
+ >
193
+ > [!TIP] "HarmonyOS Support" 列为 yes 表示 HarmonyOS 平台支持该接口;no 表示不支持;partially 表示部分支持。使用方法跨平台一致,效果对标 iOS 或 Android。
194
+
195
+ | 名称 | 说明 | 类型 | 必填 | Platform | HarmonyOS Support |
196
+ | ------------- | ----------------------------- | -------- | -------- | ------------ | ----------------- |
197
+ | get | 读取指定 key 的值;不存在时返回 `null` | function | no | Android、iOS | yes |
198
+ | set | 写入 key-value | function | no | Android、iOS | yes |
199
+ | clear | 删除指定 key | function | no | Android、iOS | yes |
200
+ | getMultiple | 批量读取多个 key | function | no | Android、iOS | yes |
201
+ | setMultiple | 批量写入多个 key-value | function | no | Android、iOS | yes |
202
+ | clearMultiple | 批量删除多个 key | function | no | Android、iOS | yes |
203
+ | getAll | 读取全部键值对,返回 `{ [key: string]: string }` | function | no | Android、iOS | yes |
204
+ | clearAll | 清空全部键值对 | function | no | Android、iOS | yes |
205
+ | getName | 获取当前 Preferences 实例名称 | function | no | Android、iOS | yes |
206
+ | setName | 设置 Preferences 实例名称 | function | no | Android、iOS | yes |
207
+
208
+
209
+ ## 遗留问题
210
+
211
+ 无
212
+
213
+ ## 其他
214
+
215
+ 无
216
+
217
+ ## 目录结构
218
+
219
+ ```
220
+ /rntpc_react-native-default-preference
221
+ ├── harmony/ # 鸿蒙适配代码
222
+ │ ├── react_native_default_preference.har
223
+ │ └── react_native_default_preference/ # 鸿蒙 HAR 模块
224
+ │ ├── Index.ets
225
+ │ ├── ts.ets # ArkTS Package 导出
226
+ │ └── src/main/
227
+ │ ├── cpp/ # C++ TurboModule 桥接
228
+ │ └── ets/ # ArkTS TurboModule 实现
229
+ │ ├── RNDefaultPreferencePackage.ets
230
+ │ └── RNDefaultPreferenceTurboModule.ts
231
+ ├── src/
232
+ │ └── NativeDefaultPreference.ts # TurboModule Codegen Spec
233
+ ├── example/ # 示例与门禁测试工程
234
+ ├── index.js # JS 入口
235
+ ├── index.d.ts
236
+ ├── package.json
237
+ ├── README.md
238
+ ├── README_EN.md
239
+ └── CHANGELOG.md
240
+ ```
241
+
242
+ ## 贡献代码
243
+
244
+ 使用过程中发现任何问题都可以提交 [Issue](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/issues),当然,也非常欢迎提交 [PR](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/pulls) 。
245
+
246
+ ## 开源协议
247
+
248
+ 本项目基于 [The MIT License (MIT)](https://gitcode.com/CPF-RN/rntpc_react-native-default-preference/blob/master/LICENSE) ,请自由地享受和参与开源。