将本地 iOS 应用的数据迁移到 React Native 应用的 Asyncstorage 中。

4

当从原生iOS(Objective-C)开发迁移到React Native开发时,我们如何保持现有用户的“签入状态”,并使用户在从应用商店更新应用程序时过渡无缝。

要实现这一点,需要:

  1. 从持久存储中读取数据(即用户名、电子邮件、访问令牌)(通常为NSDictionary)
  2. 将其存储在React Native框架提供的asyncStorage中

问题是:

  1. React Native中是否有任何辅助方法来实现此功能?
  2. 是否有其他库可用于此目的?
  3. 如果前两个问题的答案是“否”,那么如何在Objective-C中实现它?
1个回答

2

我们最近在一款应用中遇到了相同的用例,并决定采取以下措施:

像通常一样从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中(或者是否有其他用户设置的副本可用),如果没有,则将当前值持久化。
另一种选择是使用React Native中可用的"Settings"模块,它允许您访问"NSUserDefaults"。它具有".get()"和".set()"方法,因此在技术上应该可以使用它。
请注意,通过initialProperties传递的"userSettings"不会更新,直到您从Xcode中重新运行应用程序。

我正在尝试使用Settings.get('NSUserDefaults')访问NSUserDefaults,但是我收到了未定义的消息。这个方法不再可用吗? - NinetyHH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接