将原生 iOS 应用的数据迁移到 React Native 应用的异步存储
Posted
技术标签:
【中文标题】将原生 iOS 应用的数据迁移到 React Native 应用的异步存储【英文标题】:Migrating native iOS app's data to React Native app's asyncstorage 【发布时间】:2016-07-29 06:11:45 【问题描述】:从原生 ios (Objective-C) 开发迁移到响应原生开发时,我们如何让现有用户保持“登录”状态,并在用户从应用商店更新应用时实现无缝过渡。
为了这件事发生……
-
我们需要从持久存储(通常是 NSDictionary)中读取数据(即用户名、电子邮件、Accesstoken)
将其存储在 react native 框架提供的 asyncStorage 中
问题是:
-
是否有任何通过本机反应的辅助方法来做到这一点?
还有其他图书馆可以这样做吗?
如果前 2 个问题的答案是“否”,那么如何在 Objective-C 中做到这一点?
【问题讨论】:
【参考方案1】:我们最近在我们的一个应用程序中使用了相同的用例,并决定执行以下操作:
像往常一样从NSUserDictionary
读取(获取所有元素)并将它们传递给RCTRootView
NSDictionary *userSettings = @; // fetch them here
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"XYZ"
initialProperties:userSettings
launchOptions:launchOptions];
假设您的 userSettings
字典包含例如accessToken
属性,您应该能够从根 React 组件(传递给 AppRegistry.registerComponent
的组件)中访问 this.props.accessToken
。
接下来,您可以检查值是否已保存到 AsyncStorage(或者是否有任何其他您应该使用的 userSettings 副本),如果没有 - 保存当前值。
另一种选择是使用 React Native 中提供的 Settings
模块,它允许您访问 NSUserDefaults
。它有.get()
和.set()
方法,所以技术上应该可以使用它。
请注意,在您从 Xcode 中重新运行应用程序之前,通过 initialProperties 传递的 userSettings
不会更新。
【讨论】:
我正在尝试使用 Settings.get('NSUserDefaults') 访问 NSUserDefaults,但我收到未定义。是不是不能用了?以上是关于将原生 iOS 应用的数据迁移到 React Native 应用的异步存储的主要内容,如果未能解决你的问题,请参考以下文章
react-native ios项目中的Firebase身份验证问题
将参数传递到上一个屏幕并使用react-navigation进行更新
将现有的移动应用程序从 Android Native(Java) 和 IOS Native(Swift) 迁移到 React Native