我开发了支持试用模式的应用程序。但现在我需要让一些用户通过激活码获取。方案是用户下载试用版应用程序,他可以输入应用程序的激活码,然后用户可以使用该应用程序的完整功能。
任何人都可以建议我这样做。
答案 0 :(得分:0)
您需要考虑如何对代码进行身份验证 - 我猜您不希望他们通过商店对代码进行身份验证,因此您必须提供一些后端服务才能执行此操作。
该服务显然需要将激活码发送给它(您应将其存储在远程设置中),并且您可能希望发送设备唯一ID - 您可以使用unique id进行此操作。
然后,您的服务应该验证它看到代码的次数,如果它感到高兴它应该hash代码,设备ID和与您的应用程序共享的秘密 - 这将需要嵌入到内部你的应用代码。
为了获得用户的额外隐私,我建议在将设备发送到服务器之前使用共享密钥对设备唯一ID进行哈希处理。
您需要将返回的激活码存储在您的应用中 - 并且没有太多选择 - 我会亲自将此代码存储在LocalSettings区域。
现在启动时,您需要验证存储的激活码是否有效。如果您有互联网连接,那么您可以通过询问服务代码是否有效来执行此操作,但您必须安排离线检查。这很简单,因为激活码加上针对共享密钥的散列设备ID应该等于存储的激活码 - 取决于您可能希望在需要互联网访问之前允许5次激活的应用类型(选择高数字,因为这可能真的惹恼用户)
最后,您需要考虑拥有多个设备的用户 - 根据商店,您可以为不同设备的相同用户安装5个相同应用程序。为了适应这种情况,我们将激活代码存储在远程设置中,因此在启动时检查代码是否存在,以及它是否自动将代码和设备ID发送到您的服务以进行激活。
您需要考虑的唯一另一件事是您如何在应用程序中保护共享密钥?不幸的是,这方面的选择并不多。这实际上取决于您的应用需要多么安全。如果你完全偏执,那么混淆你的代码,但这只是花时间。如果您需要更多,那么我建议您发送设备代码,使用加密随机随机数对您的服务进行哈希处理,这将返回您发送的内容,但随机密码。不幸的是,这将使激活令牌无法进行离线验证,因此您必须建立一个不需要互联网连接的宽限期。
或者您可以在应用内购买。