为什么在使用企业签名身份进行部署但在设备上进行精细测试时,写入密钥链是否成功?

时间:2015-01-16 08:07:15

标签: swift keychain

在模拟器和设备上进行测试时,此功能可以正确写入钥匙串。安装企业签名标识时,它不起作用。

值得一提的是,应用程序和应用程序的扩展程序中启用了Keychain Sharing。

请注意,使用开发资料构建时,它在设备上的效果非常好。

此外,操作中没有记录任何错误(见下文),因此没有任何关于失败原因的信息。

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")
    }
}

1 个答案:

答案 0 :(得分:0)

我认为这是Swift iOS中的一个错误,只发生在64位设备中。该解决方案有效,但我已提交报告: https://stackoverflow.com/a/27721235/737470