/ Team iOS

Make iOS Ratings Great Again !

Voici comment nous avons fait exploser le nombre de notes déposées par nos utilisateurs sur l'Appstore et amélioré radicalement sa note moyenne 📈

Pourquoi faire ?

Pour que votre application se démarque de ses concurrentes sur l'Appstore et que les utilisateurs la téléchargent massivement, sa note moyenne est un critère très important. Il est donc primordial pour vous qu'elle soit la plus haute possible et ce, sur un large échantillon.

Dans ce post, je vous propose un retour d'expérience sur la stratégie que nous avons mise en place, utilisant la nouvelle popup native d'Apple, segmentant nos utilisateurs et selectionnant au mieux le moment opportun.
Vous trouverez également plusieurs diagrammes, courbes afin de vous présenter concrètement ces résultats...

ratings_average_ok

La courbe ci-dessus représente la note (en moyenne sur 10 ans) de l'application PagesJaunes, pour les 12 derniers mois...

Une popup native 🎁

À partir d'iOS 10.3, Apple a mis à disposition SKStoreReviewController. Cette classe propose une seule et unique méthode, requestReview(), demandant au système d'afficher une (jolie) popup incitant l'utilisateur à donner une note à l'application puis à déposer un avis si cela le tente. La seule chose à faire dans votre code, c'est d'ajouter les deux lignes ci-dessous :

if #available(iOS 10.3, *) {
    SKStoreReviewController.requestReview()
}

Précisons importantes :

  1. il n'y a aucun callback pour savoir si l'utilisateur a accepté ou refusé de noter votre app (compliqué de placer des tags de stat pour monitorer tout ça...)
  2. la popup ne sera affichée que 3 fois maximum par an même si vous la demandez 2000 fois et vous ne saurez jamais si elle l'a été réellement [1]
  3. en DEBUG elle est systématiquement affichée mais en version TestFlight : jamais ! [2]

review

Une fois qu'on sait comment afficher cette popup, encore faut-il s'en servir à bon escient et la présenter 1️⃣ à celles et ceux susceptibles de vous donner une (très) bonne note, 2️⃣ au moment le plus efficace... Il est en effet totalement inutile de la demander systematiquement au 1er lancement de l'appli.

Première chose à faire donc : identifiez à qui vous allez la montrer[3].

Segmentez vos utilisateurs

Ne ciblez que celles et ceux qui utilisent vraiment votre app'

Segmentez selon leur récurrence d'usage

Si vous voulez que votre popup performe, vous devez cibler les gens qui aiment et utilisent vraiment votre appli, et factuelement ce sont ceux qui reviennent régulièrement.

Pour ce faire, nous avons segmenté les utilisateurs en trois groupes selon la fréquence de leur activité : Low, Medium ou High.

Cet UserActivityType est calculé en fonction de la récurence de visites sur 7 jours glissants[4]. En gros si votre user vient entre 3 et 5 fois sur l'appli dans la semaine, il appartient au segment Medium, s'il revient plus souvent, il est qualifié comme High.

L'enumération UserActivityType:

/// How active is this User ?
///
/// - Low      : Active 1-2 times in past 7 days
/// - Medium   : Active 3-5 times in past 7 days
/// - High     : Active 6+  times in past 7 days
enum UserActivityType : String {
  case inactive
  case low
  case medium
  case high
}

Segmentez selon leurs actions

Une fois que vous avez isolés les utilisateurs qui utilisent régulièrement votre application, il faut encore affiner en ne proposant la popup qu'à ceux qui ont exécuté des actions utiles. Par exemple si vous proposez dans votre app' la prise de rendez-vous chez un médecin, ceci est une action engageante/positives qui fait de votre user un utilisateur satisfait et donc apte à vous donner une (très) bonne note.

À vous de mettre en place un système persistant permettant de compter les occurences de telles actions. Une base Realm ou votre NSUserDefault feront très bien l'affaire...

Choisissez le bon moment !

Déterminez le bon moment, votre utilisateur ne doit jamais être interrompu au milieu de son parcours !

Après avoir trié sur le volet ceux à qui vous souhaitez proposer votre popup, il ne vous reste qu'à déterminer le bon moment ! Car pour vous donner une bonne note, l'utilisateur ne doit pas se sentir frustré, il ne doit jamais être interrompu au milieu de son parcours...
Dans notre exemple précédent de prise de rendez-vous, vous n'allez pas lui proposer votre popup avant qu'il ait effectivement validé sa réservation... Au contraire, vous allez choisir le moment où il a terminé son parcours, que tout s'est bien deroulé, car à ce moment là votre user est satisfait de votre service et il vous mettra 5 étoiles quasiment à coup sûr (ne lui demandez pas de vous donner une note s'il a reçu une erreur hein, ce serait totalement contre-productif)...

Pour quel résultat ?

Concernant notre appli, le nombre total de notes est calculé depuis 10 ans... Le résultat est sans appel: 3 mois et 2 versions après la mise en prod de cette "fonctionnalité", ce nombre à bondi de 30%. Oui oui, c'est bien ça: en 3 mois, nous avons réalisé 30% du total des notes déposées depuis 10 ans sur l'Appstore !

ratings_total_ok

Le nombre de notes déposées par jour a également logiquement explosé et si on regarde leur nombre par version de l'app cela donne le sympathique diagramme ci-dessous :

nb_ratings_version_ok

La mise en place de cette popup, affichée aux bonnes personnes au bon moment a eu un effet immédiat. En gros de 65 notes déposées par version, nous sommes passés à plus de 8000... Bref une augmentation stratosphérique du moins les premiers temps, ce pourcentage devrait logiquement se tarrir avec le temps...

Dernière chose, nous observons une nette progression de la proportion de 5 étoiles par rapport aux autres notes, comme vous pouvez le constater ci-dessous, là où avant nous dépassions à peine les 50%, nous sommes aujourd'hui constamment au-dessus de 65% :

pourcentage_5_stars

Et si, cerise sur le gateau, vous profitez de cette occasion pour remettre à zéro la note de votre appli, vous pouvez là encore espérer une bien belle évolution...

Aaaaaah, qu'il est bon d'avoir des étoiles plein les yeux 🤩


Quelques sources d'inspiration :
Instagram ratings (Appbot), Instagram ratings (Huggingface), Joecieplinski, Clevertap et un Petit coup de pression d'Apple


  1. La doc d'Apple précise: Although you should call this method when it makes sense in the user experience flow of your app, the actual display of a rating/review request view is governed by App Store policy. Ceci a le mérite d'être clair... ↩︎

  2. Petits malins, vous pensiez qu'Apple allait laisser vos beta testeurs noter votre app' sur le store ? ↩︎

  3. Titre ! ↩︎

  4. Techniquement parlant, la date de chaque lancement de l'appli est enregistrée dans une base Realm. ↩︎