为Cocoa应用程序创建一个唠叨屏幕

时间:2009-09-19 01:01:33

标签: objective-c cocoa shareware

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

“还不...... 10” “不是...... 9”

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

我已经看到这在Pacifist中做得很好,任何帮助都会受到赞赏。感谢

4 个答案:

答案 0 :(得分:8)

可能不是你想听的,但我不这样做。当您评估软件时,没有什么比基于计时器的唠叨屏幕更令人烦恼了。

我并不是说烦人,因为“它会让我有理由购买非软件版本的软件”。我的意思很烦人,因为“我永远不会再触摸那个应用程序”。

我为会计师提供了类似方法的软件,当我给他们一个单独的版本,只是在报告中泼了“评价副本”时,他们非常高兴。

在进行测验时,他们明确表示他们对这样的限制感到满意,或者甚至略微减少了功能(例如只有10个客户端文件而不是无限制)但是唠叨屏幕在开始时减慢了它们的速度对软件印象不好。

如果你想给他们购买的理由,可以从TechDirt的书中摘一下 - 免费提供一些东西(但不是烦人的版本),然后让它值得他们一边买东西一边稀缺。为此,我不会将免费版本宣传为有限版,而是专注于通过付费获得的额外功能。

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

您可以通过向客户提供额外的付款来获取更多信息,而不是在他们不付款的情况下带走一些东西。

你投入的旋转很重要,而不是实际结果。

答案 1 :(得分:2)

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

将这些添加到界面:

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]];
}

这样的东西会起作用。祝好运!

答案 2 :(得分:0)

我不喜欢他们,但这是怎么做的:

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

答案 3 :(得分:0)

几个Mac应用程序在主窗口的右上角使用了一个微妙的“X days left”消息。 最突出的例子是:

在这里你可以看到这个方法:Coda screenshot(见右上角)

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