我们很难尝试使用钥匙串服务在两个应用之间共享信息。
我们有两个应用程序:
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.-我们已经做了另一个原生应用程序,它可以查询由CoreApp填充的钥匙串,并且效果很好。
2.-我们已经开设了另一个混合应用程序,用于在钥匙串中设置值,而SatelliteApp会成功查询它。
似乎我们没有在同一容器中设置值,我们正在从其他应用程序中检索值。但我们不知道如何将所有应用程序指向同一个地方。
有谁知道会发生什么?任何提示,测试或建议都将受到高度赞赏。
非常感谢。
答案 0 :(得分:2)
我遇到了同样的问题。我的解决方案是通过com.crypho.plugins.securestorage(http://plugins.cordova.io/#/package/com.crypho.plugins.securestorage)更改Cordova中的插件。
问题是SSKeychain插件有一个与Cordova Keychain插件不同的钥匙串访问组,所以在使用相同插件的应用程序之间运行良好,但是当插件不同时,它们不起作用。
com.crypho.plugins.securestorage文档:在iOS上,秘密通过SSKeychain库直接存储在KeyChain中。