Realm有一个很棒的write up和sample code用于加密您的数据库。此文档和示例按预期工作,直到您尝试解密域时:
这是因为我们无法访问钥匙串来获取(或创建)用于解密/解密Realm的密钥。默认kSecAttrAccessible
值为kSecAttrAccessibleWhenUnlocked
我看到了一些选项:
kSecAttrAccessible
更改为kSecAttrAccessibleAlways
。我不喜欢这个,因为它是a)太开放了b)在iOS 9中它是slated to be deprecated kSecAttrAccessible
更改为kSecAttrAccessibleAfterFirstUnlock
或kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
。虽然docs状态:numbers as indexing tuples
状态:对于需要由后台应用程序访问的项目,建议这样做更好但仍然让我感觉太开放kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
保护密钥我目前正在尝试决定是否#2,如果#3值得投入时间,或者我是否能想出#5
这里有一种我明显应该使用的方法还是一种我错过的方法?
由于
答案 0 :(得分:2)
我是KeychainAccess图书馆的作者。我强烈建议您使用format.mFormatFlags = kAudioFormatFlagIsPacked | kAudioFormatFlagIsFloat
(第二个选项)。这是从后台访问钥匙串项目的最佳方式。