【问题标题】:Accessing local storage, Migrating Cordova App to Swift App访问本地存储,将 Cordova App 迁移到 Swift App
【发布时间】:2021-09-10 13:09:12
【问题描述】:

我们正处于在新的 Swift 应用程序中完全重写旧版 Cordova 应用程序的尾声,我们面临的问题是在迁移时,Cordova 应用程序会在设备上存储一些信息,例如刷新令牌和当我们强制将用户升级到新应用时,我们希望他们保持登录状态。

Cordova 应用程序正在使用一个名为 LokiJS 的库来执行此操作,并将此信息存储在 /var/mobile/Containers/Data/Application/{UUID}/Library/NoCloud/ 目录中的 sql lite db 中。 新的 Swift 应用程序将使用相同的包标识符,因此我们应该能够访问这个目录,尽管到目前为止我还没有找到访问它的方法。

SearchPathDirectory 中对于FileManager 没有/Library/NoCloud 目录,如果我们使用.libraryDirectory 并在其上附加“NoCloud”,我们会得到:"The folder “NoCloud” doesn’t exist." 或者甚至列出 .libraryDirectory 的 subpathsOfDirectory 我们获取:"The file “Library” couldn’t be opened because there is no such file." 应用的 UUID 在每次安装时也会发生变化,因此无法知道原始完整路径。

以前有没有人这样做过? Cordova 应用程序必须有一种方法可以读取/写入它,但我似乎找不到任何具体的解决方案,我们实现这一点非常重要,值得注意的是我们的 Android 应用程序可以访问这个 Loki db。

【问题讨论】:

    标签: ios swift cordova nsfilemanager lokijs


    【解决方案1】:

    解决了!

    搞砸之后我发现我使用了错误的路径,我将目录设置为:

    let libraryDirectory = try! FileManager.default.url(for: .libraryDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    

    并尝试列出其内容:

    FileManager.default.subpathsOfDirectory(atPath: "\(libraryDirectory.absoluteString)/NoCloud")
    

    其实我应该一直在使用,

    FileManager.default.subpathsOfDirectory(atPath: "\(libraryDirectory.path)/NoCloud")
    

    它向我展示了一切 :) 所以要访问我需要的 db 文件的内容是

    String(contentsOfFile: "\(libraryDirectory.path)/NoCloud/{db_file_name}", encoding: .utf8)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多