【问题标题】:Creating a nag screen for a Cocoa app为 Cocoa 应用程序创建一个唠叨屏幕
【发布时间】:2010-11-29 15:54:52
【问题描述】:

我正在创建一个共享软件 Cocoa 应用程序,我想知道放入“nag screen”的最佳方式是什么。基本上在应用程序的主窗口显示之前,我想要一个带有一些文本的窗口、一个注册按钮和一个“Not Yet”按钮(最初是禁用的)。 Not Yet 按钮上会有一个计时器,所以按钮标题会根据秒数变化,比如:

“还没有……10” “还没有……9”

等等。并且在 10 秒结束时,Not Yet 按钮将启用,允许用户继续并使用该应用程序。做这样的事情的最好方法是什么?我可以使用 NSAlert 吗?

我已经看到这在 Pacifist 中做得很好,任何帮助将不胜感激。谢谢

【问题讨论】:

  • 人们会购买好的共享软件产品,而不是因为烦人的弹出窗口。
  • 我发现计时器方法非常令人沮丧(特别是如果它要在启动时出现)。当应用程序的试用版除了保存之类的功能之外,我更喜欢它(水印输出更好,因为用户可以准确地看到应用程序产生的内容)。这样,用户可以随心所欲地使用应用程序(看看它是如何工作的,等等),但如果他们想用它来生产一些东西,就必须购买它。
  • 如果你有一个功能相当齐全的免费版本,为什么不制作一个二进制文件,比如 14 天,然后恢复为免费功能。您所要做的就是在主窗口的标题栏中放置一个链接,并温和地提醒您“试用期还剩 14 天”或类似的内容。图像编辑器 Acorn 2.0 完美地做到了这一点。唠叨屏幕很烂。不要这样做。

标签: objective-c cocoa shareware


【解决方案1】:

可能不是你想听到的,但我不会那样做。当您评估软件时,没有什么比基于计时器的导航屏幕更烦人了。

我的意思并不是像“它会给我一个理由购买你的软件的非唠叨版本”那样令人讨厌。我的意思是“我再也不会碰那个应用程序”这样的烦人。

我已经为会计师做过类似的软件,当我给他们一个单独的版本时,他们只是在报告中添加了“评估副本”,他们非常高兴。

当被问到时,他们明确表示他们对这样的限制感到满意,甚至功能略有减少(比如只有 10 个客户端文件,而不是无限的),但 nag 屏幕在开始时减慢了他们的速度,这给了一个非常对软件印象不好。

如果你想给他们一个购买的理由,请从TechDirt 的书中学习——免费提供一些东西(但不是令人讨厌的版本),然后让它值得他们花时间买稀缺的东西。为此,我不会将免费版本宣传为有限,而是专注于他们通过付费获得的额外功能。

这是基本的营销 101,类似于快餐店提供的 regularlarge 尺寸,而不是 smalllarge :-)

通过向客户提供额外的付款而不是在他们不付款时拿走某些东西,您将从客户那里获得更多收益。

重要的是你对它的旋转,而不是实际结果。

【讨论】:

  • 谢谢,我可能会考虑换个方向,而不是使用唠叨屏幕。但是我的应用程序的免费版本已经功能齐全,但我正在考虑添加一些人们可以付费的东西......
  • 这与我无关,但我认为答案很好,因为它包含示例和理性论证。它使我对 nag 屏幕的看法(不是我曾经打算实现它们)。干得好。
  • 我会留在计时器。但请确保在前 10 天没有弹出任何内容 20 开始(以先到者为准)。或者跟踪他们使用它的时间。在您看到客户对您的软件感兴趣后变得烦人是很重要的。
【解决方案2】:

一些 Mac 应用程序在主窗口的右上角使用微妙的“还剩 X 天”消息。 最突出的例子是:

您可以在此处看到该方法的实际效果:Coda screenshot(查看右上角)

这种方法摆脱了潜在买家的方式,但也提醒他购买你的产品。

【讨论】:

    【解决方案3】:

    我个人只会让您的共享软件应用程序在几天后执行此操作,让他们评估几天“免费”...但这只是我的意见!试试这个:

    将这些添加到界面中:

    IBOutlet NSTextField *countdownLabel;
    IBOutlet NSButton *continueButton;
    NSTimer *timer;
    

    .m:

    - (id)init{
        self = [super init];
        [countdownLabel setStringValue:[NSString stringWithFormat:@"%d",10]];
        timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self  selector:@selector(nagTimer:) userInfo:nil repeats:YES];
        return self;
    }
    
    
    - (void)nagTimer:(id)sender{
        if ([countdownLabel intValue] == 0){
            [timer invalidate];
            [continueButton setEnabled:YES];
            return;
        }
        [countdownLabel setStringValue:[NSString stringWithFormat:@"%d",[countdownLabel intValue] - 1]];
    }
    

    类似的东西会起作用。祝你好运!

    【讨论】:

      【解决方案4】:

      我不喜欢它们,但方法如下:

      创建一个警报视图,以及一个 NSTimer。然后当计时器到达 x 秒时,将按钮设置为激活状态(不完全确定如何执行此操作,但应该不会太难)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多