nicklockwood/iRate — pull request #90 by yas375 (2013-04-05 09:55:26+00:00)
Title: Added method to trigger prompting if needed

This change reduces some code duplication and allows to ask outside iRate prompt if needed.

**Why do we need this.**

We use custom dialog for prompting. In `iRateShouldPromptForRating` we return NO and show our custom dialog. So iRate handles all the logic for us (thanks!).

Also we have a passcode which can be enabled or disabled. We want to prompt the user at launch (`promptAtLaunch` is true). But if the user has enabled the passcode in our app we don't want to ask him to rate the app until he enter passcode. That's why we have something like this:

```obj-c
#pragma mark - iRateDelegate

- (BOOL)iRateShouldPromptForRating
{
if (self.presentingPasscodeInput == NO) {
// show our custom prompt
}
return NO;
}
```

And when passcode is unlocked I need to ask iRate to prompt the user to rate the app if needed.

As one of solutions is when the passcode is unlocked to call:

```obj-c
if ([[iRate sharedInstance] shouldPromptForRating])
{
[[iRate sharedInstance] promptIfNetworkAvailable];
}
```

But it doesn't seems very nice to me. I think call `[[iRate sharedInstance] promptIfNeeded]` is cleaner. And it also reduces some code duplication in the library itself.

Thoughts? :)