在钥匙串 Swift 中存储整数

Posted

技术标签:

【中文标题】在钥匙串 Swift 中存储整数【英文标题】:Storing Integer in Keychain Swift 【发布时间】:2021-07-12 06:09:48 【问题描述】:

我正在尝试在应用中实施试用。在试用版中,用户可以使用一定数量的项目的功能(如创建笔记)。我目前将试验项目计数存储在UserDefaults

问题在于 ios UserDefaults 数据已清除,当用户重新安装应用程序时,试用会更新。

我想允许每台设备进行一次试用,其中试用笔记计数应在重新安装后从存储的值继续计算。

实现此目的的一种方法是将值存储在KeyChain 中,记录音符计数。所以我的问题是,是否允许将非密码值存储在KeyChain 中,或者是否有更好的方法来实现这一点?

【问题讨论】:

你看过In-App Purchase吗? 我认为您是在建议消耗性应用内购买。该应用程序已经有订阅。在允许的配额用完后,请求用户订阅。 【参考方案1】:

严格来说,您不能在钥匙串中保存整数。

但您可以将整数转换为 String 并将其存储为 密码 或与 JSON 格式的其他数据一起存储为 Secure Note

【讨论】:

但是每次更新钥匙串值是否理想? 为什么不呢?另一种方式可能是与网络服务器通信 问,因为钥匙串通常用于存储密码等。 将整数存储为字符串也无济于事,因为我需要一个整数来与限制进行比较。 安全笔记用于存储非密码的敏感数据。将Int 转换为String 非常简单,反之亦然【参考方案2】:

在使用 Apple 的 KeyChain API 一段时间后,我最终使用了名为 KeyChainSwift 的外部库来处理 KeyChain,我的很多问题都消失了。例如,在 Keychain 中存储任何类型的值(也是整数)。这是 cocapods 库的链接 KeyChainSwift ,这里是使用它的简单教程:KeychainSwift tutorial

【讨论】:

以上是关于在钥匙串 Swift 中存储整数的主要内容,如果未能解决你的问题,请参考以下文章

重新安装应用程序后,钥匙串存储的密码仍然可用

来自钥匙串的 Swift 4 WKWebView 身份验证

使用 Swift 向 iOS 钥匙串添加项目和查询

NE***Manager 中使用的 Swift 中的钥匙串引用

使用 Swift 查询 iOS 钥匙串

SecItemCopyMatching 的 swift 2.0 钥匙串类型错误