2

I'm creating a shareware Cocoa app and I wanted to know what is the best way to put in a "nag screen". Basically before the main window of the app shows, I want to have a window with some text, a register button, and a "Not Yet" button (which is disabled at first). There will be a timer on the Not Yet button so the button title will change according to the number of seconds , so like:

"Not Yet...10" "Not Yet...9"

etc. and at the end of the 10 seconds the Not Yet button will become enabled allowing the user to proceed and use the app. What's the best way to do something like this? Can I use NSAlert?

I've seen this being done well in Pacifist, any help would be appreciated. Thanks

indragie
  • 18,002
  • 16
  • 95
  • 164
  • 1
    People buy shareware products if they are good, not because of annoying popup windows. – Jay Sep 19 '09 at 01:39
  • 1
    I find the timer approach very frustrating (particularly if it is going to appear at launch time). I prefer it when a trial version of an application is functional except for things like saving (watermarking output is even better, because the user can see exactly what the app produces). This way, the user can use the application as much as they want (to see how it works, etc.), but if they want to use it to produce something, they must buy it. – Steve Harrison Sep 19 '09 at 02:19
  • If you've got a free version that's pretty full-featured, why not make one binary that does everything for, say, 14 days, and then reverts to free functionality after that. All you have to do is put a link in the main window's title bar with a gentle reminder "14 days left in trial" or something like that. Acorn 2.0, the image editor, does this beautifully. Nag screens suck. Don't do it. – Alex Sep 19 '09 at 04:32

4 Answers4

8

Probably not what you want to hear, but I wouldn't do it that way. There is nothing more annoying than a timer-based nag screen when you're evaluating software.

And I don't mean annoying as in "it will give me a reason to buy a non-nag version of your software". I mean annoying as in "I'll never touch that application again".

I've done software for accountants that had a similar approach yet, when I gave them a separate version which just splashed "Evaluation Copy" across the reports, they were quite happy.

When quizzed, they made it clear that they were happy with a limitation like that, or even slightly reduced functionality (like only 10 client files instead of unlimited) but the nag screen slowed them down at the start and that gave a very bad impression of the software.

If you want to give them a reason to buy, take a leaf from the book of TechDirt - offer something for free (but not an annoying version) and then make it worth their while to buy something scarce. To that end, I wouldn't advertise the free version as limited but rather concentrate on the extra functionality they'll get by paying.

That's basic marketing 101 along the lines of fast food outlets offering regular and large sizes rather than small and large :-)

You'll get more from a customer by offering them something extra for payment instead of taking away something if they don't pay.

It's the spin you put on it that matters, not the actual outcome.

paxdiablo
  • 854,327
  • 234
  • 1,573
  • 1,953
  • Thanks, I might consider going another direction than using a nag screen. But the free version of my app is already pretty full featured, but I'm thinking of things to add that people could pay for... – indragie Sep 19 '09 at 03:31
  • This is irrelevant to me, but I thought that the answer was nice since it included examples and a rational argument. It has set my view on nag screens (not that I ever intended on implementing them). Nice job. – Jorge Israel Peña Sep 19 '09 at 04:06
  • I would staywith the timer. But make sure that nothing pops up in the first 10 days 20 starts (whatever comes first). Or track the time they use it. It is important to become annoying after you see the customer has an interest in your software. – Lothar Oct 12 '09 at 16:42
2

I personally would only have your Shareware App do this after a few days, let them evaluate it for a couple of days "nag free"... but that's just my opinion! Try this:

add these to the interface:

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

Something like that would work. Good Luck!

micmoo
  • 5,991
  • 3
  • 22
  • 16
0

I dislike them, but here's how to do it:

Create an alert view, as well as an NSTimer. Then when the timer gets to x seconds, set the button to active (not entirely sure how to do that, but it shouldn't be too hard) .

paxdiablo
  • 854,327
  • 234
  • 1,573
  • 1,953
Matt S.
  • 13,305
  • 15
  • 73
  • 129
0

Several Mac apps use a subtle "X days left" message in the right upper corner of the main window. Most prominent examples are:

Here you can see that method in action: Coda screenshot (look at the upper right)

This approach gets out of the potential buyers way but also reminds him to purchase your product.

Thomas Zoechling
  • 34,177
  • 3
  • 81
  • 112