You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

120 lines
3.6 KiB

//
// ATAppRatingFlow.h
// ApptentiveConnect
//
// Created by Andrew Wooster on 7/8/11.
// Copyright 2011 Apptentive, Inc. All rights reserved.
//
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
#elif TARGET_OS_MAC
#import <Cocoa/Cocoa.h>
#endif
/*! Notification sent when the user has agreed to rate the application. */
extern NSString *const ATAppRatingFlowUserAgreedToRateAppNotification;
/*! A workflow for a user either giving feedback on or rating the current
application. */
@interface ATAppRatingFlow : NSObject
#if TARGET_OS_IPHONE
<SKStoreProductViewControllerDelegate, UIAlertViewDelegate>
#endif
{
@private
NSString *iTunesAppID;
#if TARGET_OS_IPHONE
UIAlertView *enjoymentDialog;
UIAlertView *ratingDialog;
#endif
NSUInteger daysBeforePrompt;
NSUInteger usesBeforePrompt;
NSUInteger significantEventsBeforePrompt;
NSUInteger daysBeforeRePrompting;
NSDate *lastUseOfApp;
NSString *appName;
}
/*! Set to a custom app name if you'd like to use something other than the bundle display name. */
@property (nonatomic, copy) NSString *appName;
/*! The default singleton constructor. Call with an iTunes Applicaiton ID as
an NSString */
+ (ATAppRatingFlow *)sharedRatingFlowWithAppID:(NSString *)iTunesAppID;
#if TARGET_OS_IPHONE
/*!
Call when the application is done launching. If we should be able to
prompt for a rating, pass YES for canPromptRating. The viewController is
the viewController from which a feedback dialog will be shown.
*/
- (void)appDidLaunch:(BOOL)canPromptForRating viewController:(UIViewController *)viewController;
/*!
Call when the application enters the foreground. If we should be able to
prompt for a rating, pass YES.
The viewController is the UIViewController from which a feedback dialog
will be shown.
*/
- (void)appDidEnterForeground:(BOOL)canPromptForRating viewController:(UIViewController *)viewController;
/*!
Call whenever a significant event occurs in the application. So, for example,
if you want to have a rating show up after the user has played 20 levels of
a game, you would set significantEventsBeforePrompt to 20, and call this
after each level.
If we should be able to prompt for a rating when this is called, pass YES.
The viewController is the UIViewController from which a feedback dialog
will be shown.
*/
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating viewController:(UIViewController *)viewController;
#elif TARGET_OS_MAC
/*!
Call when the application is done launching. If we should be able to
prompt for a rating, pass YES.
*/
- (void)appDidLaunch:(BOOL)canPromptForRating;
/*!
Call whenever a significant event occurs in the application. So, for example,
if you want to have a rating show up after the user has played 20 levels of
a game, you would set significantEventsBeforePrompt to 20, and call this
after each level.
If we should be able to prompt for a rating when this is called, pass YES.
*/
- (void)userDidPerformSignificantEvent:(BOOL)canPromptForRating;
#endif
#if TARGET_OS_IPHONE
/*!
Call if you want to show the enjoyment dialog directly. This enters the flow
for either bringing up the feedback view or the rating dialog.
*/
- (void)showEnjoymentDialog:(UIViewController *)vc;
/*!
Call if you want to show the rating dialog directly.
*/
- (IBAction)showRatingDialog:(UIViewController *)vc;
#elif TARGET_OS_MAC
/*!
Call if you want to show the enjoyment dialog directly. This enters the flow
for either bringing up the feedback view or the rating dialog.
*/
- (IBAction)showEnjoymentDialog:(id)sender;
/*!
Call if you want to show the rating dialog directly.
*/
- (IBAction)showRatingDialog:(id)sender;
#endif
@end