C# Windows应用商店应用程序-允许用户通过代码删除试用模式

C# Windows应用商店应用程序-允许用户通过代码删除试用模式,c#,windows-runtime,windows-store-apps,windows-store,C#,Windows Runtime,Windows Store Apps,Windows Store,我开发了支持试用模式的应用程序。但现在我需要让一些用户通过激活码获得完整信息。场景是用户下载试用应用程序,他可以输入应用程序的激活码,然后用户可以使用应用程序的全部功能 任何人都可以向我推荐一种方法。您需要考虑如何对代码进行身份验证-我猜您不希望他们通过商店对代码进行身份验证,因此您必须提供一些后端服务来完成此操作 该服务显然需要向其发送激活码(您应该将其存储在remotesettings中),并且您可能需要向其发送设备唯一ID—您可以使用 然后,你的服务应该验证它看到代码的次数,如果它高兴的话

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


任何人都可以向我推荐一种方法。

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

该服务显然需要向其发送激活码(您应该将其存储在remotesettings中),并且您可能需要向其发送设备唯一ID—您可以使用

然后,你的服务应该验证它看到代码的次数,如果它高兴的话,应该验证代码、设备ID和与你的应用程序共享的秘密-这需要嵌入到你的应用程序代码中

对于用户的额外隐私,我建议在将设备唯一ID发送到服务器之前,将其与共享机密进行散列

你需要将返回的激活码存储在你的应用程序中——没有很多选择——我个人会将此代码存储在该区域

现在启动时,您需要验证存储的激活码是否有效。如果您有internet连接,则可以通过询问服务代码是否有效来执行此操作,但您必须安排脱机检查。这很简单,因为激活码,加上根据共享密钥散列的设备ID应该等于存储的激活码-根据应用程序的类型,在需要访问internet之前,您可能希望以这种方式只允许5次激活(选择一个较大的数字,因为这可能会真正激怒用户)

<> P>最后,你需要考虑拥有多个设备的用户——根据商店,你可以在同一个用户上安装5个相同的应用程序,安装在不同的设备上。为了适应这种情况,我们将激活代码存储在remotesettings中,因此在启动时检查代码是否存在,以及它是否会自动将代码和设备id发送到您的服务以进行激活

你需要考虑的另一件事是,你究竟是如何在你的应用程序中确保共享秘密的?不幸的是,没有太多的选择。这实际上取决于你的应用程序需要有多安全。如果你完全是偏执狂,那就把你的代码弄糊涂,但这只会赢得时间。如果您需要更多,那么我建议您发送设备代码,使用加密随机nonce散列到您的服务中,这将返回您发送的内容,但使用秘密散列。不幸的是,这将使激活令牌的脱机验证变得不可能,因此您必须在不需要internet连接的宽限期内进行构建


或者您可以使用应用内购买。

非常感谢您的解释,但问题是,我没有找到任何方法将试用版转换为完整版,而不向商店支付任何费用。我尝试的是应用内购买,但当我尝试购买应用时,它会要求用户登录商店并从他的帐户中扣除付款。但我想做的是,用户下载试用版并使用给定的代码激活应用程序(无需在商店付费)。这很好,只需让应用程序免费,并使用您自己的代码来决定它是否是试用版。我有没有办法保持商店购买和试用模式。我需要这个的原因是,我想给一些用户免费许可证。例如评论员。所以,我只需要这个功能就可以将许可证授予选定数量的用户。所有其他用户都必须从商店试用或完全试用。非常感谢您的快速回复。:)在您的应用程序中,当您检查逻辑以查看应用程序是否已购买或仍在试用模式下运行时,只需包括上述检查。