Il ne recevra pas de futures mises à jour ou correctifs de bogues. Si vous l'utilisez, veuillez migrer vers une autre solution.
Irate est une bibliothèque pour vous aider à promouvoir les applications de votre iPhone et Mac App Store en incitant les utilisateurs à évaluer l'application après l'avoir utilisé pendant quelques jours. Cette approche est l'une des meilleures façons d'obtenir des avis d'applications positives en ne ciblant que des utilisateurs réguliers (qui aiment probablement l'application ou ne continueraient pas à l'utiliser!).
Remarque: `` pris en charge '' signifie que la bibliothèque a été testée avec cette version. «Compatible» signifie que la bibliothèque doit fonctionner sur cette version du système d'exploitation (c'est-à-dire qu'elle ne s'appuie pas sur des fonctionnalités SDK indisponibles) mais n'est plus testée pour la compatibilité et peut nécessiter des ajustements ou des correctifs de bogue pour s'exécuter correctement.
À partir de la version 1.7, IRate nécessite l'arc. Si vous souhaitez utiliser IRate dans un projet non ARC, ajoutez simplement l'indicateur de compilateur -fobjc-arc à la classe IRate.m. Pour ce faire, accédez à l'onglet Build Phases dans vos paramètres cibles, ouvrez le groupe de sources de compilation, double-cliquez sur Irate.m dans la liste et tapez -fobjc-arc dans le popover.
Si vous souhaitez convertir l'intégralité de votre projet en arc, commentez la ligne #Error dans IRate.m, puis exécutez le montage> Refactor> Convertir en objectif-C ... outil dans Xcode et assurez-vous que tous les fichiers que vous souhaitez Utiliser l'arc pour (y compris le ful.m) sont vérifiés.
L'irate utilise le threading en interne pour éviter de bloquer l'interface utilisateur, mais aucune des interfaces externes futiles n'est sûre et vous ne devez appeler aucune méthode ou définir aucune propriété sur IRate, sauf à partir du thread principal.
Pour installer l'irate dans votre application, faites glisser les fichiers IRate.h, .m et .m et. Vous pouvez omettre le .bundle si vous n'êtes pas intéressé par le texte localisé.
IRATE ne nécessite généralement aucune configuration du tout et s'exécutera simplement automatiquement, en utilisant l'ID de bundle de l'application pour rechercher l'ID d'application sur l'App Store.
Remarque: Si vous avez des applications avec des ID de bundle assortis dans les magasins d'applications Mac et iOS (même s'ils utilisent une capitalisation différente), le mécanisme de recherche ne fonctionnera donc pas, vous devrez donc définir manuellement la propriété AppStoreId, qui est un L'ID numérique qui peut être trouvé dans iTunes Connect après avoir configuré une application. De plus, si vous créez une application Mac Sandboxed et que votre application ne demande pas l'autorisation d'accès au réseau, vous devrez définir l'AppStoreID car elle ne peut pas être récupérée à partir du service iTunes.
Si vous souhaitez personnaliser l'irate, -[application:didFinishLaunchingWithOptions:]
meilleur moment pour L'application de la configuration plus tard peut ne pas fonctionner, car l'invite a peut-être déjà été montrée à ce point:
#import "iRate.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//configure iRate
[iRate sharedInstance].daysUntilPrompt = 5;
[iRate sharedInstance].usesUntilPrompt = 15;
return YES;
}
Pour configurer l'irate, il existe un certain nombre de propriétés de la classe furieuse qui peuvent modifier le comportement et l'apparence de l'irate. Ceux-ci devraient être principalement explicatifs, mais ils sont documentés ci-dessous:
@property (nonatomic, assign) NSUInteger appStoreID;
Cela devrait correspondre à l'ID de l'application iTunes de votre application, que vous pouvez obtenir sur iTunes Connect après avoir configuré votre application. Cette valeur n'est normalement pas nécessaire et n'est généralement requise que si vous avez le conflit susmentionné entre les ID de bundle pour vos applications Mac et iOS, ou dans le cas des applications Mac Sandboxed, si votre application n'a pas l'autorisation du réseau car elle ne sera pas Capable de récupérer automatiquement AppstoreID à l'aide de services iTunes.
@property (nonatomic, assign) NSUInteger appStoreGenreID;
Il s'agit du type d'application, utilisé pour déterminer le texte par défaut pour la boîte de dialogue de notation. Ceci est défini automatiquement en appelant un service iTunes, vous ne devriez donc pas avoir besoin de le définir manuellement à la plupart des fins. Si vous souhaitez remplacer cette valeur, le définir sur la constante iRateAppStoreGameGenreID
amènera le colère à utiliser la version "jeu" de la boîte de dialogue de notation, et le définir sur toute autre valeur utilisera la version "App" de la boîte de dialogue de notation.
@property (nonatomic, copy) NSString *appStoreCountry;
Il s'agit du code de pays à deux lettres utilisé pour spécifier l'iTunes Store à vérifier. Il est défini automatiquement à partir des préférences locales de l'appareil, il ne devrait donc pas être modifié dans la plupart des cas. Vous pouvez remplacer cela pour pointer vers le magasin américain, ou un autre magasin spécifique si vous préférez, ce qui peut être une bonne idée si votre application n'est disponible que dans certains pays.
@property (nonatomic, copy) NSString *applicationName;
C'est le nom de l'application affichée dans l'alerte en colère. Il est défini automatiquement à partir de l'info.plist de l'application, mais vous souhaiterez peut-être le remplacer avec une version plus courte ou plus longue.
@property (nonatomic, copy) NSString *applicationBundleID;
Il s'agit de l'ID de bundle d'applications, utilisé pour récupérer l' appStoreID
et appStoreGenreID
à partir d'iTunes. Ceci est défini automatiquement à partir de l'info.plist de l'application, vous ne devez donc pas avoir besoin de le modifier, sauf à des fins de test.
@property (nonatomic, assign) float daysUntilPrompt;
Il s'agit du nombre de jours que l'utilisateur doit avoir l'installation de l'application avant d'être invité à la noter. Le temps est mesuré à partir de la première fois que l'application est lancée. Il s'agit d'une valeur de point flottante, il peut donc être utilisé pour spécifier un nombre fractionnaire de jours (par exemple 0,5). La valeur par défaut est de 10 jours.
@property (nonatomic, assign) NSUInteger usesUntilPrompt;
Il s'agit du nombre minimum de fois que l'utilisateur doit lancer l'application avant qu'ils ne soient invités à le noter. Cela évite le scénario où un utilisateur exécute l'application une fois, ne le regarde pas pendant des semaines, puis le lance à nouveau, pour être immédiatement invité à le noter. Le nombre d'utilisation minimale garantit que seuls les utilisateurs fréquents sont invités. L'invite n'apparaîtra qu'après le nombre de jours spécifié et les utilisations ont été atteintes. Cela par défaut est 10 utilisations.
@property (nonatomic, assign) NSUInteger eventsUntilPrompt;
Pour certaines applications, les lancements ne sont pas une bonne mesure pour l'utilisation. Par exemple, l'application peut être un démon qui s'exécute constamment, ou un jeu où l'utilisateur ne peut pas rédiger une critique éclairée avant d'avoir atteint un niveau particulier. Dans ce cas, vous pouvez enregistrer manuellement les événements importants et faire apparaître l'invite après un nombre prédéterminé de ces événements. Comme le paramètre USUSULTILPROMPT, l'invite n'apparaîtra qu'après le nombre spécifié de jours et d'événements, mais une fois le seuil de jour atteint, l'invite apparaît si le seuil d'événement ou utilise le seuil atteint. Cela par défaut est de 10 événements.
@property (nonatomic, assign) float usesPerWeekForPrompt;
Si vous êtes moins préoccupé par le nombre total de fois que l'application est utilisée, mais que vous préférez utiliser la fréquence des fois où l'application est utilisée, vous pouvez utiliser la propriété usesPerWeekForPrompt
pour définir un seuil minimum pour le nombre de fois que l'utilisateur doit lancer L'application par semaine (en moyenne) pour l'invite à afficher. Notez que c'est la moyenne depuis l'installation de l'application, donc si l'utilisateur se déroule pendant une longue période sans exécuter l'application, il peut éliminer la moyenne. La valeur par défaut est nulle.
@property (nonatomic, assign) float remindPeriod;
Combien de temps l'application doit attendre avant de rappeler à un utilisateur de noter après avoir sélectionné l'option "Rappelez-moi plus tard" (mesurée en jours). Une valeur de zéro signifie que l'application rappellera le lancement de l'utilisateur suivant. Notez que cette valeur remplace les autres critères, de sorte que l'application ne provoquera pas de note pendant la période de rappel, même si une nouvelle version est publiée entre-temps. Cela par défaut est à 1 jour.
@property (nonatomic, copy) NSString *messageTitle;
Le titre affiché pour l'invite de notation. Si vous ne souhaitez pas afficher un titre, définissez ceci sur @""
;
@property (nonatomic, copy) NSString *message;
Le message de l'invite de notation. Cela devrait être poli et courtois, mais pas trop verbeux. Si vous ne souhaitez pas afficher un message, définissez ceci sur @""
;
@property (nonatomic, copy) NSString *updateMessage;
Ceci est un message à utiliser pour les utilisateurs qui ont précédemment évalué l'application, les encourageant à se réécrire. Cela vous permet de personnaliser le message pour ces utilisateurs. Si vous ne fournissez pas de message personnalisé pour ce cas, le message standard sera utilisé.
@property (nonatomic, copy) NSString *cancelButtonLabel;
L'étiquette de bouton pour le bouton pour rejeter l'invite de notation sans évaluer l'application.
@property (nonatomic, copy) NSString *rateButtonLabel;
L'étiquette de bouton pour le bouton que l'utilisateur appuie s'il souhaite évaluer l'application.
@property (nonatomic, copy) NSString *remindButtonLabel;
L'étiquette de bouton pour le bouton que l'utilisateur appuie s'il ne veut pas évaluer l'application immédiatement, mais je veux en être rappelé à l'avenir. Définissez ceci sur @""
Si vous ne voulez pas afficher le bouton Rappel moi - par exemple si vous n'avez pas d'espace à l'écran.
@property (nonatomic, assign) BOOL useAllAvailableLanguages;
Par défaut, IRate utilisera toutes les langues disponibles dans le Bundle IRate.Bundle, même si elle est utilisée dans une application qui ne prend pas en charge la localisation. Si vous préférez restreindre l'irate pour utiliser uniquement le même ensemble de langues que votre application prend déjà en charge, définissez cette propriété sur non. (Par défaut est oui).
@property (nonatomic, assign) BOOL promptForNewVersionIfUserRated;
Étant donné que les notes iTunes sont spécifiques à la version, vous souhaitez idéalement que les utilisateurs évaluent chaque nouvelle version de votre application. Les utilisateurs qui aiment vraiment votre application peuvent être prêts à mettre à jour leur avis pour les nouvelles versions. Définissez promptForNewVersionIfUserRated
sur YES
, et IRATE invitera à nouveau l'utilisateur à chaque fois qu'il installe une mise à jour jusqu'à ce qu'il refuse d'évaluer l'application. S'ils refusent, ils ne seront plus interrogés.
@property (nonatomic, assign) BOOL onlyPromptIfLatestVersion;
Définissez ceci sur NO pour activer l'invite de notation à afficher même si l'utilisateur n'exécute pas la dernière version de l'application. Cela par défaut est oui, car de cette façon, les utilisateurs ne laisseront pas de mauvaises avis en raison de bogues que vous avez déjà corrigés, etc.
@property (nonatomic, assign) BOOL onlyPromptIfMainWindowIsAvailable;
Ce paramètre s'applique uniquement au Mac OS. Par défaut, sur Mac OS, l'alerte en colère s'affiche sous forme de feuille sur la fenêtre principale. Certaines applications n'ont pas de fenêtre principale, donc cette approche ne fonctionne pas. Pour de telles applications, définissez cette propriété sur NO pour permettre à l'alerte de l'irate d'être affichée en tant que fenêtre modale ordinaire.
@property (nonatomic, assign) BOOL promptAtLaunch;
Définissez ceci sur NO pour désactiver l'invite de notation apparaissant automatiquement lorsque l'application se lance ou revient de l'arrière-plan. Les critères de notation continueront d'être suivis, mais l'invite ne sera pas affichée automatiquement pendant que ce paramètre est en vigueur. Vous pouvez utiliser cette option si vous souhaitez contrôler manuellement l'écran de l'invite de notation.
@property (nonatomic, assign) BOOL verboseLogging;
Cette option amènera les journaux en colère à envoyer des journaux détaillés à la console sur le processus de décision rapide. Si votre application n'invitait pas correctement à une note lorsque vous vous attendez à ce que vous le fassiez, cela vous aidera à comprendre pourquoi. L'enregistrement verbeux est activé par défaut sur les builds de débogage et désactivé sur les versions de libération et de déploiement.
@property (nonatomic, assign) BOOL previewMode;
S'il est défini sur oui, IRATE affichera toujours l'invite de notation lors du lancement, quelle que soit la durée de l'application utilisée ou s'il s'agit de la dernière version (sauf si vous avez explicitement désactivé l'option promptAtLaunch
). Utilisez-le pour relire votre message et vérifiez que votre configuration est correcte pendant les tests, mais désactivez-la pour la version finale (par défaut non).
@property (nonatomic, assign) BOOL useUIAlertControllerIfAvailable;
Par défaut, IRate utilisera UiaLertView sur iOS pour afficher l'invite de notation. UiaLertview a été déprécié dans IOS8 et remplacé par UialertController. Malheureusement, contrairement à UiaLertView, la présentation d'une alerte avec UiaLertController interfère avec la capacité de l'application à afficher d'autres contrôleurs, et comme IRate pourrait théoriquement afficher une alerte à tout moment de la durée de vie de l'application . Pour cette raison, l'utilisation d'UialertController est désactivée par défaut. Vous ne devez définir cette propriété que si vous êtes certain qu'elle ne se heurtera pas à la logique de votre application (par exemple, si vous avez des invites de notation automatiques désactivées, ou si votre application n'utilise aucun contrôleurs de vue modale).
@property (nonatomic, assign) BOOL useSKStoreReviewControllerIfAvailable;
Par défaut, IRate utilisera le skstorereviewController pour demander des avis sur iOS 10.3 et supérieur. Pour désactiver cela, définissez useSKStoreReviewControllerIfAvailable
vers NO
.
Si le comportement en colère par défaut ne répond pas à vos exigences, vous pouvez implémenter le vôtre en utilisant les propriétés, les méthodes et les délégués avancés. Les propriétés ci-dessous vous permettent d'accéder à l'état interne et de le remplacer:
@property (nonatomic, strong) NSURL *ratingsURL;
L'URL à laquelle l'application dirigera l'utilisateur afin qu'il puisse écrire une note pour l'application. Ceci est défini sur la valeur correcte pour la plate-forme donnée automatiquement. Sur iOS 6 et en dessous, cela amène les utilisateurs directement à la page des notes, mais sur iOS 7 et Mac OS, il amène les utilisateurs à la page de l'application principale (s'il existe un moyen de créer directement un lien vers la page de notes de ces plateformes, j'ai encore pour le trouver). Si vous implémentez votre propre invite de notation, vous devriez probablement utiliser la méthode openRatingsPageInAppStore
à la place, en particulier sur Mac OS, car le processus d'ouverture du Mac App Store est plus complexe que d'ouvrir l'URL.
@property (nonatomic, strong) NSDate *firstUsed;
La première date à laquelle l'utilisateur a lancé la version actuelle de l'application. Ceci est utilisé pour calculer si le critère DaysbunbrandProppt a été rempli.
@property (nonatomic, strong) NSDate *lastReminded;
La date à laquelle l'utilisateur a demandé pour la dernière fois à se rappeler d'évaluer l'application plus tard.
@property (nonatomic, assign) NSUInteger usesCount;
Le nombre de fois que la version actuelle de l'application a été utilisée (lancée).
@property (nonatomic, assign) NSUInteger eventCount;
Le nombre d'événements d'application significatifs enregistrés depuis l'installation de la version actuelle. Ceci est incrémenté par la méthode de Logevent, mais peut également être manipulé directement. Découvrez la démo des événements pour voir comment ce système d'exploitation a utilisé.
@property (nonatomic, readonly) float usesPerWeek;
Le nombre moyen de fois par semaine que la version actuelle de l'application a été utilisée (lancée).
@property (nonatomic, assign) BOOL declinedThisVersion;
Cet drapeau indique si l'utilisateur a refusé d'évaluer la version actuelle (oui) ou non (non). Ceci n'est pas actuellement utilisé par la logique d'incitation en colère, mais peut être utile pour implémenter votre propre logique.
@property (nonatomic, assign) BOOL declinedAnyVersion;
Cet drapeau indique si l'utilisateur a refusé d'évaluer une version précédente de l'application (oui) ou non (non). IRate n'invitera pas l'utilisateur automatiquement si cela est défini sur OUI.
@property (nonatomic, assign) BOOL ratedThisVersion;
Cet drapeau indique si l'utilisateur a déjà évalué la version actuelle (oui) ou non (non).
@property (nonatomic, readonly) BOOL ratedAnyVersion;
Cet drapeau (ReadOnly) indique si l'utilisateur a précédemment évalué une version de l'application (oui) ou non (non).
@property (nonatomic, assign) id<iRateDelegate> delegate;
Un objet que vous avez fourni qui met en œuvre le protocole iRateDelegate
, documenté ci-dessous. Utilisez-le pour détecter et / ou remplacer le comportement par défaut d'Irate. Cela par défaut est le délégué de l'application, donc si vous utilisez votre délégué d'application comme votre délégué en colère, vous n'avez pas besoin de définir cette propriété.
Outre la configuration, IRate a les méthodes suivantes:
- (BOOL)shouldPromptForRating;
Renvoie oui si les critères rapides ont été remplis, et non s'ils ne l'ont pas fait. Vous pouvez l'utiliser pour décider quand afficher une invite de notation si vous avez désactivé l'affichage automatique au lancement de l'application. L'appel de cette méthode n'appellera pas la méthode du délégué iRateShouldPromptForRating
.
- (void)promptForRating;
Cette méthode déclenchera immédiatement l'invite de notation sans vérifier que l'App Store est disponible, et sans appeler la méthode du délégué InteradHouldPromptforrating. Notez que cette méthode dépend des propriétés appStoreID
et applicationGenre
, qui ne sont récupérées qu'après avoir interrogé le serveur iTunes, donc si vous avez l'intention d'appeler cette méthode directement, vous devrez définir ces propriétés vous-même au préalable ou utiliser la méthode promptIfNetworkAvailable
à la place.
- (void)promptIfNetworkAvailable;
Cette méthode vérifiera si l'App Store est disponible, et si c'est le cas, il affichera l'invite de notation à l'utilisateur. La méthode du déléguée IrrateHouldPromptforrating sera appelée avant que l'alerte ne soit affichée, vous pouvez donc l'intercepter. Notez que si votre application est sableuse et n'a pas l'autorisation d'accès au réseau, cette méthode ignorera l'état de la disponibilité du réseau, mais dans ce cas, vous devrez définir manuellement l' appStoreID
ou IRATE ne peut pas fonctionner.
- (void)promptIfAllCriteriaMet;
Cette méthode vérifiera si tous les critères d'incitation ont été remplis et si l'App Store est disponible, et si c'est le cas, il affichera l'invite de notation à l'utilisateur. La méthode du déléguée IrrateHouldPromptforrating sera appelée avant que l'alerte ne soit affichée, vous pouvez donc l'intercepter.
- (void)openRatingsPageInAppStore;
Cette méthode saute l'alerte utilisateur et ouvre la page de notes d'application dans le Mac ou l'iPhone App Store, selon la plate-forme en colère. Cette méthode n'effectue aucune vérification pour vérifier que la machine a un accès au réseau ou que l'App Store est disponible. Il n'appelle pas non plus la méthode du délégué -iRateShouldOpenAppStore
. Vous devez utiliser cette méthode pour ouvrir la page de notes au lieu de la propriété Ratingsurl, car le processus de lancement de l'App Store est plus complexe que d'ouvrir l'URL dans de nombreux cas. Notez que cette méthode dépend de l' appStoreID
qui n'est récupérée qu'après avoir interrogé le serveur iTunes. Si vous appelez cette méthode sans d'abord effectuer une vérification de mise à jour, vous devrez soit définir la propriété appStoreID
vous-même, soit risquer que la méthode puisse prendre un certain temps pour passer un appel réseau ou échouer entièrement. Au cours du succès, cette méthode appellera la méthode du délégué -iRateDidOpenAppStore
. En défaillance, il appellera la méthode -iRateCouldNotConnectToAppStore:
Delegate.
- (void)logEvent:(BOOL)deferPrompt;
Cette méthode peut être appelée de n'importe où dans votre application (après la configuration de l'irate) et augmente le nombre de événements significatifs en colère. Lorsque le nombre prédéfini d'événements est atteint, l'invite de notation sera affichée. Le paramètre de DeferPrompt optionnel est utilisé pour déterminer si l'invite sera affichée immédiatement (non) ou si l'application attendra le prochain lancement (oui).
- (void)remindLater;
Cette méthode réinitialise la période de rappel.
Le protocole IREDELEGATE fournit les méthodes suivantes qui peuvent être utilisées d'interception en colère et remplacer le comportement par défaut. Toutes les méthodes sont facultatives.
- (void)iRateCouldNotConnectToAppStore:(NSError *)error;
Cette méthode est appelée si le colère ne peut pas se connecter à l'App Store, généralement parce que la connexion réseau est en baisse. Cela peut également se déclencher si votre application n'a pas accès au réseau en raison des autorisations de bac à sable, auquel cas vous devrez définir manuellement l'AppStoreID afin que l'intelligence puisse toujours fonctionner.
- (void)iRateDidDetectAppUpdate;
Cette méthode est appelée si IRate détecte que l'application a été mise à jour depuis la dernière fois qu'il a été lancé.
- (BOOL)iRateShouldPromptForRating;
Cette méthode est appelée immédiatement avant que l'invite de notation ne soit affichée à l'utilisateur. Vous pouvez utiliser cette méthode pour implémenter une logique d'invite personnalisée en plus des règles standard. Vous pouvez également utiliser cette méthode pour bloquer l'alerte de l'invite standard et afficher l'invite de notation d'une manière différente, ou le contourner complètement.
- (void)iRateDidPromptForRating;
Cette méthode est appelée immédiatement avant que l'invite de notation ne soit affichée. Ceci est utile si vous utilisez des analyses pour suivre le pourcentage d'utilisateurs voient l'invite, puis accédez à l'App Store. Cela peut vous aider à affiner les circonstances autour du moment / comment vous montrez l'invite.
- (void)iRateUserDidAttemptToRateApp;
Ceci est appelé lorsque l'utilisateur a appuyé sur le bouton de vitesse dans l'invite de notation. Ceci est utile si vous souhaitez enregistrer l'interaction des utilisateurs avec l'intérêt. Cette méthode n'est appelée que si vous utilisez l'invite de vue d'alerte en colère standard et ne sera pas appelée automatiquement si vous fournissez une implémentation de notation personnalisée ou appelez directement la méthode openRatingsPageInAppStore
.
- (void)iRateUserDidDeclineToRateApp;
Cela s'appelle lorsque l'utilisateur refuse d'évaluer l'application. Ceci est utile si vous souhaitez enregistrer l'interaction des utilisateurs avec l'intérêt. Cette méthode n'est appelée que si vous utilisez l'invite de vue d'alerte en colère standard et ne sera pas appelée automatiquement si vous fournissez une implémentation de notation personnalisée.
- (void)iRateUserDidRequestReminderToRateApp;
Cela s'appelle lorsque l'utilisateur demande à être rappelé à évaluer l'application. Ceci est utile si vous souhaitez enregistrer l'interaction des utilisateurs avec l'intérêt. Cette méthode n'est appelée que si vous utilisez l'invite de vue d'alerte en colère standard et ne sera pas appelée automatiquement si vous fournissez une implémentation de notation personnalisée.
- (BOOL)iRateShouldOpenAppStore;
Cette méthode est appelée immédiatement avant les tentatives d'irate d'ouvrir l'App Store. Renvoie non si vous souhaitez implémenter votre propre logique d'affichage de la page de notes.
- (void)iRateDidOpenAppStore;
Cette méthode est appelée immédiatement après l'ouverture de l'App Store.
Les chaînes par défaut pour les furieux sont déjà localisées pour de nombreuses langues. Par défaut, IRate utilisera toutes les localisations dans le folie en colère, même dans une application qui n'est pas localisée, ou qui n'est localisée qu'à un sous-ensemble des langues que l'irate prend en charge. Les clés des cordes en colère sont:
static NSString *const iRateMessageTitleKey = @"iRateMessageTitle";
static NSString *const iRateAppMessageKey = @"iRateAppMessage";
static NSString *const iRateGameMessageKey = @"iRateGameMessage";
static NSString *const iRateUpdateMessageKey = @"iRateUpdateMessage";
static NSString *const iRateCancelButtonKey = @"iRateCancelButton";
static NSString *const iRateRemindButtonKey = @"iRateRemindButton";
static NSString *const iRateRateButtonKey = @"iRateRateButton";
Si vous préférez furieux utiliser uniquement les localisations qui sont activées dans votre application (de sorte que si votre application ne prend en charge que l'anglais, le français et l'espagnol, vous sera automatiquement localisé pour ces langues, mais pas pour l'allemand, même si l'irate comprend un allemand Fichier linguistique), définissez l'option useAllAvailableLanguages
sur no.
Il n'est pas recommandé de modifier les fichiers Strings dans le Bundle IRate.Bundle, car il compliquera la mise à jour des versions plus récentes de l'irate. L'exception à cela est de savoir si vous souhaitez soumettre des langues ou des améliorations ou des corrections supplémentaires aux localisations du projet furieux sur GitHub (qui sont grandement appréciés).
Si vous souhaitez ajouter un langage supplémentaire pour le furoc dans votre application sans les soumettre au projet GitHub, vous pouvez ajouter ces chaînes directement au fichier localisable.strings approprié dans votre dossier de projet. Si vous souhaitez remplacer une partie ou la totalité des chaînes en colère par défaut, l'option la plus simple consiste à copier uniquement ces chaînes dans votre propre fichier localisable.strings, puis de les modifier. IRATE utilisera automatiquement les chaînes dans le bundle d'application principal de préférence à ceux du bundle furieux afin que vous puissiez remplacer n'importe quelle chaîne de cette manière.
Si vous ne souhaitez pas utiliser l'une des localisations par défaut, vous pouvez omettre complètement l'irate.bundle. Notez que si vous souhaitez uniquement prendre en charge un sous-ensemble de langues que les supports en colère, il n'est pas nécessaire de supprimer les autres fichiers de chaînes de IRate.bundle - définissez simplement useAllAvailableLanguages
à non, et IRATE n'utilisera que les langues que votre application prend déjà en charge.
L'ancienne méthode pour remplacer les chaînes par défaut de l'irate en utilisant des méthodes de setter individuelles (voir ci-dessous) est toujours prise en charge, mais l'approche recommandée est maintenant d'ajouter ces chaînes au fichier localisable.strings de votre projet, qui sera détecté automatiquement par IRate.
+ (void)initialize
{
//overriding the default iRate strings
[iRate sharedInstance].messageTitle = NSLocalizedString(@"Rate MyApp", @"iRate message title");
[iRate sharedInstance].message = NSLocalizedString(@"If you like MyApp, please take the time, etc", @"iRate message");
[iRate sharedInstance].cancelButtonLabel = NSLocalizedString(@"No, Thanks", @"iRate decline button");
[iRate sharedInstance].remindButtonLabel = NSLocalizedString(@"Remind Me Later", @"iRate remind button");
[iRate sharedInstance].rateButtonLabel = NSLocalizedString(@"Rate It Now", @"iRate accept button");
}
Lorsque vous créez et exécutez le projet de base Mac ou Iphone Exemple pour la première fois, il affichera une alerte vous demandant d'évaluer l'application. En effet, l'option Aperçu est définie.
Désactivez l'option Aperçu et jouez avec les autres paramètres pour voir comment l'application se comporte dans la pratique.
L'exemple avancé montre comment vous pourriez implémenter une interface iRate complètement sur mesure à l'aide des méthodes IREDELEGATE. L'incitation automatique est désactivée et à la place, l'utilisateur peut choisir d'évaluer l'application en appuyant sur le bouton "Évaluer cette application".
Lorsqu'il est enfoncé, l'application vérifie d'abord que l'App Store est disponible (ce n'est peut-être pas si l'ordinateur n'a pas de connexion Internet ou si Apple.com est en panne), puis lance le Mac App Store.
L'exemple est pour Mac OS, mais le même principe peut être appliqué sur iOS.
Version 1.12.2
Version 1.12.1
Version 1.12
Version 1.11.7
Version 1.11.6
Version 1.11.5
Version 1.11.4
canOpenURL:
Version 1.11.3
Version 1.11.2
Version 1.11.1
Version 1.11
promptIfCriteriaMet
NSNotificationCenter
comme alternative au déléguéUIAlertController
au lieu d' UIAlertView
si disponibleVersion 1.10.3
Version 1.10.2
Version 1.10.1
Version 1.10
daysUntilPrompt
promptForNewVersionIfUserRated
pour ré-compter les utilisateurs qui ont précédemment noté (OFF par défaut)updateMessage
à utiliser avec une option promptForNewVersionIfUserRated
Version 1.9.3
Version 1.9.2
Version 1.9.1
Version 1.9
promptAgainEachVersion
Version 1.8.3
Version 1.8.2
Version 1.8.1
Version 1.8
Version 1.7.5
Version 1.7.4
Version 1.7.3
Version 1.7.2
Version 1.7.1
Version 1.7
Version 1.6.2
Version 1.6.1
Version 1.6
Version 1.5.3
Version 1.5.2
Version 1.5.1
Version 1.5
Version 1.4.9
Version 1.4.8
Version 1.4.7
Version 1.4.6
Version 1.4.5
Version 1.4.4
Version 1.4.3
Version 1.4.2
Version 1.4.1
Version 1.4
Version 1.3.5
Version 1.3.4
iRateDidDetectAppUpdate
Version 1.3.3
Version 1.3.2
Version 1.3.1
Version 1.3
Version 1.2.3
Version 1.2.2
Version 1.2.1
MAC_APP_STORE_REFRESH_DELAY
to 5 seconds to support older machinesVersion 1.2
Version 1.1
Version 1.0