为什么在使用企业签名身份部署但在设备上进行精细测试时写入钥匙串不成功?
Why doesn't writing to the keychain succeed when deployed with an Enterprise signing identity but fine testing on device?
在模拟器和设备上进行测试时,此函数会正确写入钥匙串。它在与企业签名身份一起安装时不起作用。
值得一提的是,应用程序和应用程序的扩展中启用了钥匙串共享。
请注意,在使用开发配置文件构建时,它在设备上完美运行。
此外,操作中没有记录任何错误(见下文),因此没有关于失败原因的任何信息。
public class func setToken(token: String, account: String, service: String = "APIrev1") {
var log = XCGLogger.defaultInstance()
log.info("Attempting to set token \(token) to account \(account)")
var secret: NSData = token.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
let objects: Array = [secClassGenericPassword(), service, account, secret]
let keys: Array = [secClass(), secAttrService(), secAttrAccount(), secValueData()]
let query = NSDictionary(objects: objects, forKeys: keys)
var p1 = SecItemDelete(query as CFDictionaryRef)
if (p1 != noErr) {
log.info("SecItemDelete, key not present to delete")
}
var p2 = SecItemAdd(query as CFDictionaryRef, nil)
if (p2 != noErr) {
log.error("SecItemAdd write of token \(token) to account \(account) failed")
}
}
我认为这是 Swift iOS 中的一个错误,它只发生在 64 位设备上。该解决方案有效,但我已提交报告:
在模拟器和设备上进行测试时,此函数会正确写入钥匙串。它在与企业签名身份一起安装时不起作用。
值得一提的是,应用程序和应用程序的扩展中启用了钥匙串共享。
请注意,在使用开发配置文件构建时,它在设备上完美运行。
此外,操作中没有记录任何错误(见下文),因此没有关于失败原因的任何信息。
public class func setToken(token: String, account: String, service: String = "APIrev1") {
var log = XCGLogger.defaultInstance()
log.info("Attempting to set token \(token) to account \(account)")
var secret: NSData = token.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
let objects: Array = [secClassGenericPassword(), service, account, secret]
let keys: Array = [secClass(), secAttrService(), secAttrAccount(), secValueData()]
let query = NSDictionary(objects: objects, forKeys: keys)
var p1 = SecItemDelete(query as CFDictionaryRef)
if (p1 != noErr) {
log.info("SecItemDelete, key not present to delete")
}
var p2 = SecItemAdd(query as CFDictionaryRef, nil)
if (p2 != noErr) {
log.error("SecItemAdd write of token \(token) to account \(account) failed")
}
}
我认为这是 Swift iOS 中的一个错误,它只发生在 64 位设备上。该解决方案有效,但我已提交报告: