将原生 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

将应用数据迁移到新的 IOS 应用

如何将现有核心数据 iOS 7 应用程序的数据迁移到 iCloud?

DevSettings.reload() 用于在 React Native 中注销