mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			200 lines
		
	
	
	
		
			7.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
	
		
			7.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  This file is part of Appirater.
 | |
| 
 | |
|  Copyright (c) 2010, Arash Payan
 | |
|  All rights reserved.
 | |
| 
 | |
|  Permission is hereby granted, free of charge, to any person
 | |
|  obtaining a copy of this software and associated documentation
 | |
|  files (the "Software"), to deal in the Software without
 | |
|  restriction, including without limitation the rights to use,
 | |
|  copy, modify, merge, publish, distribute, sublicense, and/or sell
 | |
|  copies of the Software, and to permit persons to whom the
 | |
|  Software is furnished to do so, subject to the following
 | |
|  conditions:
 | |
| 
 | |
|  The above copyright notice and this permission notice shall be
 | |
|  included in all copies or substantial portions of the Software.
 | |
| 
 | |
|  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | |
|  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 | |
|  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | |
|  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 | |
|  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 | |
|  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | |
|  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 | |
|  OTHER DEALINGS IN THE SOFTWARE.
 | |
|  */
 | |
| /*
 | |
|  * Appirater.h
 | |
|  * appirater
 | |
|  *
 | |
|  * Created by Arash Payan on 9/5/09.
 | |
|  * http://arashpayan.com
 | |
|  * Copyright 2010 Arash Payan. All rights reserved.
 | |
|  */
 | |
| 
 | |
| #import <Foundation/Foundation.h>
 | |
| #import <UIKit/UIKit.h>
 | |
| 
 | |
| extern NSString *const kAppiraterFirstUseDate;
 | |
| extern NSString *const kAppiraterUseCount;
 | |
| extern NSString *const kAppiraterSignificantEventCount;
 | |
| extern NSString *const kAppiraterCurrentVersion;
 | |
| extern NSString *const kAppiraterRatedCurrentVersion;
 | |
| extern NSString *const kAppiraterDeclinedToRate;
 | |
| 
 | |
| /*
 | |
|  Place your Apple generated software id here.
 | |
|  */
 | |
| #define APPIRATER_APP_ID				301377083
 | |
| 
 | |
| /*
 | |
|  Your app's name.
 | |
|  */
 | |
| #define APPIRATER_APP_NAME				[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey]
 | |
| 
 | |
| /*
 | |
|  This is the message your users will see once they've passed the day+launches
 | |
|  threshold.
 | |
|  */
 | |
| #define APPIRATER_MESSAGE				[NSString stringWithFormat:@"If you enjoy using %@, would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!", APPIRATER_APP_NAME]
 | |
| 
 | |
| /*
 | |
|  This is the title of the message alert that users will see.
 | |
|  */
 | |
| #define APPIRATER_MESSAGE_TITLE			[NSString stringWithFormat:@"Rate %@", APPIRATER_APP_NAME]
 | |
| 
 | |
| /*
 | |
|  The text of the button that rejects reviewing the app.
 | |
|  */
 | |
| #define APPIRATER_CANCEL_BUTTON			@"No, Thanks"
 | |
| 
 | |
| /*
 | |
|  Text of button that will send user to app review page.
 | |
|  */
 | |
| #define APPIRATER_RATE_BUTTON			[NSString stringWithFormat:@"Rate %@", APPIRATER_APP_NAME]
 | |
| 
 | |
| /*
 | |
|  Text for button to remind the user to review later.
 | |
|  */
 | |
| #define APPIRATER_RATE_LATER			@"Remind me later"
 | |
| 
 | |
| /*
 | |
|  Users will need to have the same version of your app installed for this many
 | |
|  days before they will be prompted to rate it.
 | |
|  */
 | |
| #define APPIRATER_DAYS_UNTIL_PROMPT		30		// double
 | |
| 
 | |
| /*
 | |
|  An example of a 'use' would be if the user launched the app. Bringing the app
 | |
|  into the foreground (on devices that support it) would also be considered
 | |
|  a 'use'. You tell Appirater about these events using the two methods:
 | |
|  [Appirater appLaunched:]
 | |
|  [Appirater appEnteredForeground:]
 | |
| 
 | |
|  Users need to 'use' the same version of the app this many times before
 | |
|  before they will be prompted to rate it.
 | |
|  */
 | |
| #define APPIRATER_USES_UNTIL_PROMPT		20		// integer
 | |
| 
 | |
| /*
 | |
|  A significant event can be anything you want to be in your app. In a
 | |
|  telephone app, a significant event might be placing or receiving a call.
 | |
|  In a game, it might be beating a level or a boss. This is just another
 | |
|  layer of filtering that can be used to make sure that only the most
 | |
|  loyal of your users are being prompted to rate you on the app store.
 | |
|  If you leave this at a value of -1, then this won't be a criteria
 | |
|  used for rating. To tell Appirater that the user has performed
 | |
|  a significant event, call the method:
 | |
|  [Appirater userDidSignificantEvent:];
 | |
|  */
 | |
| #define APPIRATER_SIG_EVENTS_UNTIL_PROMPT	-1	// integer
 | |
| 
 | |
| /*
 | |
|  Once the rating alert is presented to the user, they might select
 | |
|  'Remind me later'. This value specifies how long (in days) Appirater
 | |
|  will wait before reminding them.
 | |
|  */
 | |
| #define APPIRATER_TIME_BEFORE_REMINDING		1	// double
 | |
| 
 | |
| /*
 | |
|  'YES' will show the Appirater alert everytime. Useful for testing how your message
 | |
|  looks and making sure the link to your app's review page works.
 | |
|  */
 | |
| #define APPIRATER_DEBUG				NO
 | |
| 
 | |
| @interface Appirater : NSObject <UIAlertViewDelegate> {
 | |
| 
 | |
| 	UIAlertView		*ratingAlert;
 | |
| }
 | |
| 
 | |
| @property(nonatomic, retain) UIAlertView *ratingAlert;
 | |
| 
 | |
| /*
 | |
|  DEPRECATED: While still functional, it's better to use
 | |
|  appLaunched:(BOOL)canPromptForRating instead.
 | |
| 
 | |
|  Calls [Appirater appLaunched:YES]. See appLaunched: for details of functionality.
 | |
|  */
 | |
| + (void)appLaunched:(int)p_app_id;
 | |
| 
 | |
| /*
 | |
|  Tells Appirater that the app has launched, and on devices that do NOT
 | |
|  support multitasking, the 'uses' count will be incremented. You should
 | |
|  call this method at the end of your application delegate's
 | |
|  application:didFinishLaunchingWithOptions: method.
 | |
| 
 | |
|  If the app has been used enough to be rated (and enough significant events),
 | |
|  you can suppress the rating alert
 | |
|  by passing NO for canPromptForRating. The rating alert will simply be postponed
 | |
|  until it is called again with YES for canPromptForRating. The rating alert
 | |
|  can also be triggered by appEnteredForeground: and userDidSignificantEvent:
 | |
|  (as long as you pass YES for canPromptForRating in those methods).
 | |
|  */
 | |
| + (void)appLaunched:(BOOL)canPromptForRating app_id:(int)p_app_id;
 | |
| 
 | |
| /*
 | |
|  Tells Appirater that the app was brought to the foreground on multitasking
 | |
|  devices. You should call this method from the application delegate's
 | |
|  applicationWillEnterForeground: method.
 | |
| 
 | |
|  If the app has been used enough to be rated (and enough significant events),
 | |
|  you can suppress the rating alert
 | |
|  by passing NO for canPromptForRating. The rating alert will simply be postponed
 | |
|  until it is called again with YES for canPromptForRating. The rating alert
 | |
|  can also be triggered by appLaunched: and userDidSignificantEvent:
 | |
|  (as long as you pass YES for canPromptForRating in those methods).
 | |
|  */
 | |
| + (void)appEnteredForeground:(BOOL)canPromptForRating;
 | |
| 
 | |
| /*
 | |
|  Tells Appirater that the user performed a significant event. A significant
 | |
|  event is whatever you want it to be. If you're app is used to make VoIP
 | |
|  calls, then you might want to call this method whenever the user places
 | |
|  a call. If it's a game, you might want to call this whenever the user
 | |
|  beats a level boss.
 | |
| 
 | |
|  If the user has performed enough significant events and used the app enough,
 | |
|  you can suppress the rating alert by passing NO for canPromptForRating. The
 | |
|  rating alert will simply be postponed until it is called again with YES for
 | |
|  canPromptForRating. The rating alert can also be triggered by appLaunched:
 | |
|  and appEnteredForeground: (as long as you pass YES for canPromptForRating
 | |
|  in those methods).
 | |
|  */
 | |
| + (void)userDidSignificantEvent:(BOOL)canPromptForRating;
 | |
| 
 | |
| /*
 | |
|  Tells Appirater to open the App Store page where the user can specify a
 | |
|  rating for the app. Also records the fact that this has happened, so the
 | |
|  user won't be prompted again to rate the app.
 | |
| 
 | |
|  The only case where you should call this directly is if your app has an
 | |
|  explicit "Rate this app" command somewhere.  In all other cases, don't worry
 | |
|  about calling this -- instead, just call the other functions listed above,
 | |
|  and let Appirater handle the bookkeeping of deciding when to ask the user
 | |
|  whether to rate the app.
 | |
|  */
 | |
| + (void)rateApp;
 | |
| 
 | |
| @end
 | 
