我们在尝试使用钥匙串(keychain)服务在两个应用程序之间共享信息时遇到了困难。
我们有两个应用:
1.- CoreApp,它是原生的并使用这个插件 SSKEYCHAIN设置值:
+ (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account;
在哪里为参数设置以下值:
password = aaa
serviceName = bbb
account = ccc
2.- SatelliteApp,它是混合 (cordova) 并使用此插件 KeychainPlugin获取值:
kc.getForKey(successCallback, failureCallback, 'ccc', 'bbb');
failureCallback 由以下消息触发:
"Error retrieving vale for key ccc : (null)"
我们做了一些测试:
1.- 我们已经做了另一个 native 应用程序来查询由 CoreApp 填充的钥匙串(keychain)并且它运行良好。
2.- 我们做了另一个混合应用程序,它在钥匙串(keychain)中设置值并且 SatelliteApp 成功查询它。
似乎我们没有在从其他应用程序检索值的同一容器中设置值。但是我们不知道如何将所有应用指向同一个地方。
有人知道会发生什么吗?任何提示、要做的测试或建议都将不胜感激。
非常感谢。
最佳答案
我遇到了同样的问题。我的解决方案是通过 com.crypho.plugins.securestorage ( http://plugins.cordova.io/#/package/com.crypho.plugins.securestorage ) 更改 Cordova 中的插件。
问题是 SSKeychain 插件有一个不同于 Cordova Keychain 插件的钥匙串(keychain)访问组,所以在使用相同插件的应用程序之间工作良好,但当插件不同时就不起作用了。
com.crypho.plugins.securestorage 文档:在 iOS 上, secret 通过 SSKeychain 库直接存储在 KeyChain 中。
关于ios - Cordova Keychain 插件和 SSKeychain 插件不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30913992/