Creating a nag screen for a Cocoa app

1k views Asked by At

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

4

There are 4 answers

0
micmoo On BEST ANSWER

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!

0
Thomas Zoechling On

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.

3
paxdiablo On

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.

0
Matt S. On

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) .