iRate icon indicating copy to clipboard operation
iRate copied to clipboard

Added method to trigger prompting if needed

Open yas375 opened this issue 12 years ago • 0 comments

This change reduces some code duplication and allows to ask outside iRate to prompt the user to rate app 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:

#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:

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? :)

yas375 avatar Apr 05 '13 09:04 yas375