我的应用程序在后台捕获位置数据并保存在sqlite数据库中。当Device未锁定时,它运行良好,但是当设备被锁定时,我无法访问sqlite数据库。它总是给我错误代码为SQLITE_AUTH(错误代码:23)。 我尝试过以下选项:
sqlite3_open_v2([dbPath UTF8String],& myDatabase,SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_FILEPROTECTION_COMPLETE,NULL)
但它还是不起作用。
请帮助我,如何在后台访问sqlite数据库。
答案 0 :(得分:0)
您需要从iTunesconnect的应用中启用Data Protection。
1。为您的应用启用数据保护。例如,
2。在file protection键和值下方添加到您的plist或授权文件中,
<key>com.apple.developer.default-data-protection</key>
<string> NSFileProtectionCompleteUntilFirstUserAuthentication</string>
类型必须与您在iTunes服务器上设置的功能匹配。
3。重建并测试问题是否解决
文件数据保护 除了iOS设备内置的硬件加密功能外,Apple 使用一种称为“数据保护”的技术进一步保护存储在闪存中的数据 设备上的内存。数据保护使设备能够响应通用 事件,例如打来的电话,还启用了高级别的加密 用于用户数据。关键系统应用,例如消息,邮件,日历,联系人, 照片和健康数据值默认情况下使用数据保护,第三方使用 安装在iOS 7或更高版本上的应用会自动获得此保护。 数据保护是通过构建和管理层次结构来实现的 密钥,并基于每个密钥内置的硬件加密技术 iOS设备。通过分配每个文件来控制每个文件的数据保护 上课可访问性由类键是否已被确定 已解锁。随着Apple File System(APFS)的问世,文件系统已经成为 现在可以进一步将密钥细分为每个范围( 文件可以具有不同的密钥)。在File Data Protection部分中找到详细信息。