@@ -9,36 +9,36 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import con
99
1010## 准备你的 Xcode 项目
1111
12- 我们需要使用 Xcode 准备你的 iOS 项目。完成这 ** 6 步** 后,你将拥有一个实现 ` NativeLocalStorageSpec ` 接口的 ` RCTNativeLocalStorage ` 。
12+ 我们需要使用 Xcode 准备你的 iOS 项目。完成这 ** 6 步** 后,你将拥有一个实现生成的 ` NativeLocalStorageSpec ` 接口的 ` RCTNativeLocalStorage ` 。
1313
14- 1 . 打开 CocoPods 生成的 Xcode workspace 文件 :
14+ 1 . 打开 CocoaPods 生成的 Xcode Workspace :
1515
1616``` bash
1717cd ios
1818open TurboModuleExample.xcworkspace
1919```
2020
21- <img class =" half-size " alt =" Open Xcode Workspace " src =" /docs/assets/turbo-native-modules/xcode/1.webp " />
21+ <img className =" half-size " alt =" Open Xcode Workspace " src =" /docs/assets/turbo-native-modules/xcode/1.webp " />
2222
23232 . 右键点击应用,选择 <code >New Group</code >,将新组命名为 ` NativeLocalStorage ` 。
2424
25- <img class =" half-size " alt =" Right click on app and select New Group " src =" /docs/assets/turbo-native-modules/xcode/2.webp " />
25+ <img className =" half-size " alt =" Right click on app and select New Group " src =" /docs/assets/turbo-native-modules/xcode/2.webp " />
2626
27273 . 在 ` NativeLocalStorage ` 组中,创建 <code >New</code >→<code >File from Template</code >。
2828
29- <img class =" half-size " alt =" Create a new file using the Cocoa Touch Class template " src =" /docs/assets/turbo-native-modules/xcode/3.webp " />
29+ <img className =" half-size " alt =" Create a new file using the Cocoa Touch Class template " src =" /docs/assets/turbo-native-modules/xcode/3.webp " />
3030
31314 . 使用 <code >Cocoa Touch Class</code > 模板。
3232
33- <img class =" half-size " alt =" Use the Cocoa Touch Class template " src =" /docs/assets/turbo-native-modules/xcode/4.webp " />
33+ <img className =" half-size " alt =" Use the Cocoa Touch Class template " src =" /docs/assets/turbo-native-modules/xcode/4.webp " />
3434
35- 5 . 将类命名为 <code >RCTNativeLocalStorage</code >,并选择 <code >Objective-C</code > 语言。
35+ 5 . 将 Cocoa Touch Class 命名为 <code >RCTNativeLocalStorage</code >,并选择 <code >Objective-C</code > 语言。
3636
37- <img class =" half-size " alt =" Create an Objective-C RCTNativeLocalStorage class " src =" /docs/assets/turbo-native-modules/xcode/5.webp " />
37+ <img className =" half-size " alt =" Create an Objective-C RCTNativeLocalStorage class " src =" /docs/assets/turbo-native-modules/xcode/5.webp " />
3838
39396 . 将 <code >RCTNativeLocalStorage.m</code > 重命名为 <code >RCTNativeLocalStorage.mm</code >,使其成为 Objective-C++ 文件。
4040
41- <img class =" half-size " alt =" Convert to and Objective-C++ file " src =" /docs/assets/turbo-native-modules/xcode/6.webp " />
41+ <img className =" half-size " alt =" Convert to and Objective-C++ file " src =" /docs/assets/turbo-native-modules/xcode/6.webp " />
4242
4343## 使用 NSUserDefaults 实现 localStorage
4444
@@ -78,8 +78,6 @@ static NSString *const RCTNativeLocalStorageKey = @"local-storage";
7878
7979@implementation RCTNativeLocalStorage
8080
81- RCT_EXPORT_MODULE(NativeLocalStorage)
82-
8381- (id) init {
8482 if (self = [ super init] ) {
8583 _ localStorage = [[ NSUserDefaults alloc] initWithSuiteName: RCTNativeLocalStorageKey ] ;
@@ -111,14 +109,57 @@ RCT_EXPORT_MODULE(NativeLocalStorage)
111109 }
112110}
113111
112+ + (NSString * )moduleName
113+ {
114+ return @"NativeLocalStorage";
115+ }
116+
114117@end
115118```
116119
117- 重要注意事项 :
120+ 需要注意的要点 :
118121
119- - `RCT_EXPORT_MODULE` 导出并注册模块,使用我们在 JavaScript 环境中访问它的标识符:`NativeLocalStorage`。更多详情请参阅 [docs](./legacy/native-modules-ios#module-name)。
120122- 你可以使用 Xcode 跳转到 Codegen `@protocol NativeLocalStorageSpec`。你也可以使用 Xcode 为你生成 stub。
121123
124+ ## 在应用中注册原生模块
125+
126+ 最后一步是更新 `package.json`,告诉 React Native 如何将原生模块的 JS 规格与这些规格在原生代码中的具体实现关联起来。
127+
128+ 按如下方式修改 `package.json`:
129+
130+ ```json title="package.json"
131+ "start": "react-native start",
132+ "test": "jest"
133+ },
134+ "codegenConfig": {
135+ "name": "NativeLocalStorageSpec",
136+ "type": "modules",
137+ "jsSrcsDir": "specs",
138+ "android": {
139+ "javaPackageName": "com.sampleapp.specs"
140+ },
141+ // highlight-add-start
142+ "ios": {
143+ "modulesProvider": {
144+ "NativeLocalStorage": "RCTNativeLocalStorage"
145+ }
146+ }
147+ // highlight-add-end
148+ },
149+
150+ "dependencies": {
151+ ```
152+
153+ 此时,你需要重新安装 Pods,以确保再次运行 codegen 来生成新文件:
154+
155+ ``` bash
156+ # from the ios folder
157+ bundle exec pod install
158+ open SampleApp.xcworkspace
159+ ```
160+
161+ 如果你现在从 Xcode 构建应用,应该就可以成功构建。
162+
122163## 在模拟器上构建并运行你的代码
123164
124165<Tabs groupId="package-manager" queryString defaultValue={constants.defaultPackageManager} values={constants.packageManagers}>
@@ -135,6 +176,6 @@ yarn run ios
135176</Tabs>
136177
137178<video width="30%" height="30%" playsinline="true" autoplay="true" muted="true" loop="true">
138- <source src="https://cdn.jsdelivr.net/gh/reactnativecn/react-native-website@gh-pages /docs/assets/turbo-native-modules/turbo-native-modules-ios.webm" type="video/webm" />
139- <source src="https://cdn.jsdelivr.net/gh/reactnativecn/react-native-website@gh-pages /docs/assets/turbo-native-modules/turbo-native-modules-ios.mp4" type="video/mp4" />
179+ <source src="/docs/assets/turbo-native-modules/turbo-native-modules-ios.webm" type="video/webm" />
180+ <source src="/docs/assets/turbo-native-modules/turbo-native-modules-ios.mp4" type="video/mp4" />
140181</video>
0 commit comments