2

我开发了支持试用模式的应用程序。但现在我需要让一些用户通过激活码获得完整的信息。场景是用户下载试用应用程序,他可以输入应用程序的激活码,然后用户可以使用应用程序的全部功能。

谁能给我建议一个方法来做到这一点。

4

1 回答 1

0

您需要考虑如何验证代码 - 我猜您不希望他们通过商店验证代码,因此您必须提供一些后端服务来执行此操作。

该服务显然需要将激活码发送给它(您应该将其存储在远程设置中),并且您可能希望将设备唯一 ID 发送到 - 您可以为此使用唯一 ID

然后,您的服务应该验证它看到代码的次数,如果满意,它应该对代码、设备 ID 和与您的应用程序共享的秘密进行哈希处理 - 这需要嵌入到您的应用程序代码中。

为了用户的额外隐私,我建议在将设备唯一 ID 发送到服务器之前使用共享密钥对其进行哈希处理。

您需要将返回的激活码存储在您的应用程序中 - 而且没有太多选择 - 我会亲自将此代码存储在LocalSettings区域中。

现在在启动时,您需要验证存储的激活码是否有效。如果您有互联网连接,那么您可以通过询问服务代码是否有效来做到这一点,但您必须安排离线检查。这很简单,因为激活码,加上针对共享密钥散列的散列设备 ID 应该等于存储的激活码 - 根据您的应用程序类型,您可能希望在需要互联网访问之前只允许 5 次激活(选择一个高数字,因为这真的会惹恼用户)

最后,您需要考虑拥有多台设备的用户 - 根据商店,您可以跨不同设备为相同的用户安装 5 次相同的应用程序。为了适应这一点,我们将激活码存储在远程设置中,因此在启动时检查该代码是否存在,以及它是否会自动将代码和设备 ID 发送到您的服务以进行激活。

您需要考虑的唯一另一件事是您究竟如何保护应用程序中的共享机密?不幸的是,没有太多选择。这实际上取决于您的应用程序需要有多安全。如果您完全偏执,那么请混淆您的代码,但这只是在争取时间。如果您需要更多,那么我建议您将设备代码发送给您的服务,并使用加密随机随机数进行哈希处理,这将返回您发送的内容,但使用密码进行哈希处理。不幸的是,这将使激活令牌的离线验证变得不可能,因此您必须建立一个不需要互联网连接的宽限期。

或者您可以在应用程序购买中使用。

于 2012-12-29T15:08:21.700 回答