我正在为我的iOS应用开发货币化模型,并需要一些相关技术问题的帮助。
当前的应用程序工作流程如下:用户执行一些需要大量使用云资源的操作(我为此付费)。这些资源非常昂贵,所以我不希望我的用户免费加载它们。在这种情况下,我可以想象两种可能的选择:
我知道如何实施第一个解决方案,但第二个解决方案存在问题。 我怎么知道用户刚买了我的应用程序(没有重新安装它)?有没有办法做到这一点?
答案 0 :(得分:1)
您的第二个选项的一种方法可能是应用程序在首次启动时向您的服务注册当前设备。如果(以及之前)该设备先前已注册,则拒绝访问云功能。 UIDevices identifierForVendor
足以完成任务。
这仍然允许用户在他拥有的另一台设备上第二次使用免费月份,或者如果他切换到新设备。
作为替代方案,您可以要求用户在您的服务中设置帐户,但当然无法阻止用户创建多个帐户。
两种方法的组合可能可以减少误用,但您不可能完全抑制此类尝试。
如果您需要尽可能地排除错误,您可能需要坚持第一种方法。对于您的第二种选择,您可能希望尝试将假账户/辅助设备的潜在损失计入您的定价方案。
问题的底线答案是:您无法确定用户是否已将设备重新安装在您安装应用程序的设备之外的设备上。
修改强>
结果我错过了identifierforVendor
返回的值不会持续存在的事实。不幸的是,这意味着您需要坚持第一种方法或依赖用户需要注册的帐户系统。第二种想法可能是更好的方法 - 取决于用户将能够存储在云中的内容类型,用户可能不愿意使用多个帐户,因为云中的数据与帐户相关联。因此,多个帐户实际上可能不是问题(就像保留多个Dropbox帐户一样不切实际)。
因此,问题的答案实际上是:您无法判断用户是否正在重新安装您的应用。