实施30天的时间试验

时间:2010-01-07 14:54:01

标签: cocoa macos licensing

独立Mac开发者的问题:

如何以非邪恶的方式实施30天的计时赛?将计数器放在prefs中是不可取的,因为每月擦除一次prefs对普通用户来说不是问题。将计数器放在隐藏文件的某个地方听起来有点狡猾 - 作为一个用户,我讨厌当应用程序将随机文件洒在我的硬盘上时。有什么想法吗?

9 个答案:

答案 0 :(得分:59)

这个问题在cocoa-dev邮件列表上反复出现,并且共识的答案始终是最简单的事情。确定的黑客将破坏除了最过度设计的解决方案之外的所有解决方案。而且他们不太可能为软件付费。寻求80/20解决方案:简单的解决方案,20%的努力获得80%的效果。在这种情况下,将内容放在〜/ Library / Application Support / your.app.com /中。如果你想稍微混淆一些东西,你可能会把这个文件命名为无辜。使用用户默认值也很容易。

无论您做什么,都不使用MAC地址或其他硬件ID。拥有网络主目录的用户(例如在共享实验室环境中)会讨厌您。使用硬件ID只是邪恶的。

如果有人爱上你的这么多,那么他们愿意打破你的试用限制,那就让他们吧。免费软件无需任何费用,他们的善意(也许可以推荐给其他人)非常值得。

最后,编写人们想要使用的软件并为其价值定价。如果您的价格是一个很好的价值人们想要来使用它,那么大多数人都会为此付出代价。

答案 1 :(得分:24)

我建议实施一些不那么具有侵入性的事情,可以避免普通用户在一个月内卸载或购买。

  1. 使用特殊系列的试用序列号,其中包含有效期。您可以使用加密来存储序列号中的到期日期。
  2. 现在创建一个配置文件,以encypted格式存储数据并包含序列号。
  3. 另外在配置文件中实现这些功能。

    1. 每次用户启动应用程序时记下时间/日期。
    2. 请注意申请时间的持续时间。
    3. 通过记录时间戳,您可以避免这些变通方法:

      1. 如果用户撤消了计算机日期,您就会知道该应用程序已在当天运行。假设用户在月份的1天和3天运行应用程序。现在30天后撤销日期并将其设置为月份的第2天。现在通过配置文件,你会知道应用程序已经在1和3上运行,因此用户搞砸了计算机上的日期。
      2. 假设用户每次首次将日期设置为当月5日时启动您的应用。通过记录您的应用程序运行时间,您会发现,如果一天中的总小时数超过24小时,那么用户就是在胡闹。
      3. 确保您的应用在没有配置文件的情况下无法运行。因此,基本上您将加密的序列号发送到文件中,或者输入序列号后,您可以创建文件。由于序列号已经过期,用户也无法重复使用序列号。

        我不建议使用互联网方式,因为当应用程序每次尝试连接服务器时,人们都会生气。此外,您可能会怀疑您是否尝试将某些用户的个人数据发送到您的服务器。

        我想说的一件事:无论你使用的反盗版技术多么强大,都有人必须打破它。你没有为那些人制作你的应用程序。您正在为希望购买软件并愿意购买软件的人制作应用程序。因此,在试用期间使您的应用程序过于干扰,在不失去真正客户的情况下进行反盗版。一个想法也说,如果你的软件破裂,这意味着它也越来越受欢迎。意见可能会有所不同,并且不想偏离这些问题。

答案 2 :(得分:11)

考虑一下。您的软件有多少潜在用户,只是在接下来的30天内坚定地使用它?

我怀疑更常见的情况是:用户遇到一个新的软件包,可以解决他们在像lifehacker.com这样的网站上拥有的问题。软件下载,短暂播放,然后放在一边。也许它的mp3翻录软件和他们当时没有任何CD翻录。或者那天他们只是忙碌,但是他们很快就会“很快”回顾那个软件。

30天过去了。可能更多。只有那时他们买了一张CD,遇到某种“问题”并记住,'啊哈,那是我下载的试用版!我又把它放在哪里了? 没关系。没有被使用过,'试用'已经超时了。

对于我来说,我无法计算那些陷入困境的软件工具的数量。在推荐给我的那一天,当我看到对生活骇客进行积极评价的那一天,从来没有一天我真的需要 - 甚至是时间 - 来使用/分析我下载和安装的程序。 / p>

答案 3 :(得分:7)

软件在30个日历日后过期是不好的,因为如果有人下载它,运行一次,然后决定他们将在一个月后评估它?下一次他们推出它,一个月后,它会说它已经过期了。

我将其限制为14次发布,或类似120分钟的使用。

至于实现,用户的Preferences文件夹中的文件(隐藏或未隐藏)具有模糊的名称,似乎是最好的方法。该文件不会随机放置在硬盘驱动器上,但用户无法轻易找出要删除的文件。

答案 4 :(得分:4)

最不邪恶的方法是让用户在一个月后删除该程序或付费;)

答案 5 :(得分:2)

我们为其中一个客户端应用程序做了这件事。当然,它是在.NET for Windows中完成的,但同样的原则可以在MAC中应用。

就像eckesickle提到的那样,如果您的用户可以访问互联网(或者应该),那么您可以拥有一个Web服务,该服务将在主机上注册一些具有开始日期试用的唯一ID(MAC地址很好) 。有了这个,用户无法真正欺骗该程序,除非他每个月都有机会使用他的网卡。

现在,如果用户由于某种原因无法访问Internet,您可以关闭该程序,直到他连接到该程序或使用宽限期。此文件记录上次打开应用程序的时间。当无法访问Internet时,我们停止写入时间(我们仍在其中写入内容,因此用户不会注意到文件未更新)。

如果用户注意到该文件包含该信息并将其删除(或使用他所拥有的副本进行更改),那么您需要一种方法来对抗该信息。您可以在另一个配置文件中使用其他值(始终加密)并检查一致性。如果您发现用户试图作弊,您所做的事情取决于您,但我们强迫用户连接到互联网以使其正常工作。

对于一个程序来说可能有些过分,但它确实有效。

答案 6 :(得分:2)

下载时,请提供试用序列号。当他们输入序列号时,让它连接到您的服务器并获取到期信息(在本地存储和加密以防止任何其他“电话回家”呼叫)。

通过这种方式,您可以让他们很难绕过30天的窗口,因为到期日期永久存储在服务器上。您可以进行设置,以便删除密钥并重新输入密钥会导致您的应用程序再次连接到您的服务器并下载与之前相同的到期日期。

或者你可以像WinZip一样(或曾经这样做过吗?):提供30天的试用版,只需在每次加载时弹出一个屏幕,显示您使用它的时间和购买链接

答案 7 :(得分:2)

我曾经提供了一个30天的精简版我的iOS应用程序,它将安装日期和各种记录日期嵌入到用户可以下载到他/她的计算机的导出数据文件中。

如果用户是cheapskate并且只是重新安装精简版并试图重新导入数据,逻辑会注意到至少有一个日期超过30天且应用程序会将其安装日期设置为最早来自文件的此类日期,再次使其过期。

在完整付费版本中,此逻辑不存在,并且可以轻松导入数据文件。

在这次数据迁移中支持人们是一种痛苦(因为应用程序完全是相互沙盒化的),而其他一些用户认为精简版对他们来说足够了,所以他们从未升级过。

我已经停止提供我的精简版,只是降低了完整版的价格。现在,潜在客户只需支付少量费用或找到一些竞争软件。

总而言之,这是获得付费用户的最佳策略。

答案 8 :(得分:1)

从某些硬件组件中读取UUID,并检查您的Web服务,看看您的软件是否已在程序启动后安装30天?