如何在ios后台运行应用程序时打开sqlite数据库

如何在ios后台运行应用程序时打开sqlite数据库,ios,database,sqlite,Ios,Database,Sqlite,我的应用程序在后台捕获位置数据并保存在sqlite数据库中。当设备未锁定时,它工作良好,但当设备锁定时,我无法访问sqlite数据库。它总是给我错误代码SQLITE_AUTH(错误代码:23)。 我尝试了以下选项: 禁用数据保护功能。(不起作用) 根据,我尝试了以下代码: sqlite3_open_v2([dbPath UTF8String],&myDatabase,SQLITE_open_READWRITE | SQLITE_open_CREATE | SQLITE_open_FILEPROT

我的应用程序在后台捕获位置数据并保存在sqlite数据库中。当设备未锁定时,它工作良好,但当设备锁定时,我无法访问sqlite数据库。它总是给我错误代码SQLITE_AUTH(错误代码:23)。 我尝试了以下选项:

  • 禁用数据保护功能。(不起作用)
  • 根据,我尝试了以下代码:
  • sqlite3_open_v2([dbPath UTF8String],&myDatabase,SQLITE_open_READWRITE | SQLITE_open_CREATE | SQLITE_open_FILEPROTECTION_COMPLETE,NULL)

    但它仍然不起作用

    请您帮助我,如何在后台访问sqlite数据库。

    您需要从iTunesconnect的应用程序中启用

    1。为应用程序启用数据保护。比如说,

    2。将以下密钥和值添加到您的plist或授权文件中,

    <key>com.apple.developer.default-data-protection</key>
    <string> NSFileProtectionCompleteUntilFirstUserAuthentication</string>
    
    com.apple.developer.default-data-protection
    NSFileProtectionCompleteUntilFirstUserAuthentication
    
    该类型必须与itunes服务器上的功能集相匹配

    3。重建并测试问题是否已解决


    文件数据保护 除了iOS设备内置的硬件加密功能,苹果 使用一种称为数据保护的技术来进一步保护存储在闪存中的数据 设备上的内存。数据保护允许设备响应常见的 事件(如来电),但也支持高级别的加密 用于用户数据。关键系统应用程序,如消息、邮件、日历、联系人、, 默认情况下,照片和健康数据值使用数据保护,而第三方 安装在iOS 7或更高版本上的应用程序将自动接收此保护。 数据保护是通过构建和管理层次结构来实现的 密钥,并建立在每个密钥中内置的硬件加密技术之上 iOS设备。通过分配每个文件,以每个文件为基础控制数据保护 将文件提交给一个类;可访问性取决于是否已访问类键 解锁。随着苹果文件系统(APFS)的出现,文件系统变得越来越重要 现在可以进一步将键细分为每个区段(每个区段的一部分) 文件可以有不同的键)。详细信息请参见第节。