【问题标题】:Migrating native iOS app's data to React Native app's asyncstorage将原生 iOS 应用的数据迁移到 React Native 应用的异步存储
【发布时间】:2016-07-29 06:11:45
【问题描述】:

从原生 iOS (Objective-C) 开发迁移到响应原生开发时,我们如何让现有用户保持“登录”状态,并在用户从应用商店更新应用时实现无缝过渡。

为了这件事发生……

  1. 我们需要从持久存储(通常是 NSDictionary)中读取数据(即用户名、电子邮件、Accesstoken)
  2. 将其存储在 react native 框架提供的 asyncStorage 中

问题是:

  1. 是否有任何通过本机反应的辅助方法来做到这一点?
  2. 还有其他图书馆可以这样做吗?
  3. 如果前 2 个问题的答案是“否”,那么如何在 Objective-C 中做到这一点?

【问题讨论】:

    标签: ios objective-c react-native migration


    【解决方案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,但我收到未定义。是不是不能用了?
    猜你喜欢
    • 2018-12-31
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 2021-02-22
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多