Entrée en Bourse : deux stores, deux refus, zéro répit

Le journal de lancement · 29 septembre 2026 · 20 min de lecture

English Deutsch Español Português 中文 Italiano 日本語 한국어 Русский Türkçe Polski Nederlands Bahasa Indonesia

Moneyflow est désormais sur l'App Store et sur Google Play. Nous aimerions vous dire que tout s'est bien passé. Ce n'est pas le cas. Au passage, nous avons récolté deux refus d'Apple, appris à un script de build à dire non, découvert qu'une Lambo était depuis toujours un drapeau à damier, et corrigé un bug que Google a balayé d'un haussement d'épaules et qu'Apple n'a pas laissé passer.

Voici toute l'histoire, reconstituée à partir de nos notes de version, de nos runbooks et des messages de commit écrits à la va-vite. Elle est longue, un brin insolente, et si vous êtes sur le point de lancer votre propre application, elle contient de vrais conseils. Prenez un café, ou un petit prêt sur vos actifs.

Télécharger dans l'App Store Télécharger sur Google Play

Le résumé, en dates

  1. La version 1.2.8 sort sur Google Play. L'annonce suit le soir même, en six langues.
  2. iOS rattrape Android à la 1.2.8, après que nous avons sauvé un écran de démarrage que personne ne pouvait lire.
  3. La première soumission part chez Apple sans ses achats intégrés. La deuxième repart avec les 39. Première réponse d'Apple : Information Needed.
  4. Un grand nettoyage de printemps des marques, et la build 31 pour remettre une clé manquante dans l'application.
  5. Deuxième refus, depuis un iPad : les deux boutons de connexion affichent une erreur, et l'examinateur ne trouve pas la Boutique.
  6. Le coupable est un seul paramètre manquant. Android le pardonnait discrètement depuis le début.
  7. La build 34, signée correctement. Sign in with Apple fonctionne enfin.
  8. La version 1.2.9 est déployée sur Google Play.
  9. Des joueurs nous disent que leur téléphone chauffe. Nous empêchons le jeu de faire ça.
  10. Cinq versions en un week-end, de la 1.2.10 à la 1.3.1.
  11. Le lien de l'App Store arrive sur notre page d'accueil. Vous y êtes.

Avant l'introduction en Bourse : un jeu de navigateur qui a peur de s'engager

Moneyflow est né comme un jeu de navigateur. Vous choisissez un personnage avec un vrai métier, de vraies factures et un vrai salaire, vous lancez les dés, et vous essayez de bâtir assez de revenus passifs pour échapper au 9 à 5 et payer deux rêves. Faire les deux est la seule façon de gagner, en solo comme en multijoueur. Il y a aussi un mariage, un contrat de mariage et un divorce, et nous y viendrons.

Puis nous avons décidé qu'il avait sa place sur votre téléphone et découvert qu'un store d'applications est un tout autre jeu. Pas de dés, pas de cartes, juste des formulaires, des questionnaires et une maison qui gagne toujours. Nous avons raconté la paperasse de Google Play plus tôt, dans Publier Moneyflow sur le Google Play Store. Voici la suite : ce qui s'est passé ensuite, sur les deux stores, et ce que nous nous dirions si nous pouvions revenir en arrière.

Premier tour : Google Play dit oui (après avoir tout demandé)

Google Play est passé en premier, et il s'est comporté comme une banque quand vous demandez une hypothèque : aimable, minutieux et impatient de voir chaque document que vous possédez. Le formulaire Sécurité des données, la classification du contenu, la page de suppression de compte, la période de test fermé. L'article précédent couvre tout cela, voici donc ce que nous avons changé une fois la première fiche terminée.

Nous avons arrêté de cliquer. Les 39 achats intégrés (18 pions, 14 habillages de dés, 4 thèmes de plateau et 3 packs, tous cosmétiques) ont été créés par script plutôt qu'à la main, avec RevenueCat entre l'application et les deux stores pour que la logique d'achat soit la même partout. Les publications passent aussi par l'API Android Publisher. Un script ouvre une édition, envoie le bundle, l'assigne à la piste et valide, et si une étape échoue, il supprime l'édition, si bien qu'une exécution ratée ne laisse rien derrière elle. C'est la chose la plus propre de toute cette histoire.

Play a ses caprices. Il refuse tout numéro de build qu'il a déjà vu, y compris ceux que vous avez envoyés sans jamais les publier, si bien que les numéros de build se comportent comme le cash dans le jeu : dépensez-en un et il est parti, que vous en ayez retiré quelque chose ou non. Nous avons aussi deux comptes de service, et un seul a le droit de publier. L'autre peut ouvrir une édition, envoyer tout un bundle, l'assigner à une piste puis récolter un 403 à la toute dernière étape. Tout cet effort, et un « non » ferme alors que le gâteau est déjà sur la table.

Le 7 septembre, la version 1.2.8 est sortie. Le soir même, nous avons publié l'annonce en six langues, parce que si l'on s'enthousiasme en public, autant le faire aussi en allemand, en espagnol, en français, en portugais et en chinois.

Google Play a dit oui. Apple avait d'autres idées.

Deuxième tour : Apple se fait désirer

Pendant qu'Android filait devant, iOS était encore garé à la version 1.2.1 dans App Store Connect. Le 10 septembre, il a rattrapé son retard : version 1.2.8, build 30, dix nouvelles captures d'écran et un texte promotionnel en huit langues. Avant tout cela, il y avait la petite affaire de l'accord Paid Apps. Apple ne vous laisse pas créer le moindre achat intégré tant que vous ne l'avez pas accepté et déposé vos coordonnées bancaires et fiscales. D'ici là, chaque tentative renvoie un 409, ce qui est la façon qu'a Apple de dire « pas encore, et pas avant d'avoir vu votre paperasse ».

Puis nous avons scripté les 39 achats via l'API App Store Connect. La première exécution a échoué sur 24 d'entre eux avec UNEXPECTED_ERROR. Nous l'avons relancée et tout est passé. Le runbook contient maintenant la phrase la plus zen du dépôt : relancer plutôt que déboguer.

L'écran de démarrage qui n'en était pas un

Sur un vrai téléphone, notre écran de lancement était illisible, pour deux raisons distinctes. Le storyboard remplissait l'écran avec un visuel carré, si bien que sur un téléphone en hauteur il s'agrandissait jusqu'à ce que la hauteur tienne et rognait environ 54 % de la largeur. Le logotype et tout le cadre décoratif sortaient du bord. Pire, les versions en mode sombre n'étaient que la silhouette nue à environ 5 % d'un fond crème, soit un logo invisible sur tous les téléphones réglés sur sombre.

Nous sommes passés à un visuel qui tient à l'intérieur de l'écran sur son propre fond crème, avons abandonné les variantes sombres, et mis le bloc-logo à 88 % du canevas. Le dossier d'images est passé de 55 Mo à 9,1 Mo. Une première impression ne devrait pas peser 55 Mo.

Comment soumettre une application dont la Boutique ne vend rien

Voici un piège au camouflage excellent. Les achats intégrés sont des éléments de validation distincts, et Apple ne validera pas un achat qui n'est pas dans votre soumission. La première fois que nous avons soumis, l'application est partie en validation avec les 39 produits restés à « Ready to Submit ». Si elle avait été approuvée, nous aurions publié un jeu où l'on achète et vend dont la Boutique ne pouvait rien vendre. La retirer nous a coûté un Remove from Review et notre place dans la file.

Le piège, c'est qu'Apple vous laisse démarrer un brouillon de soumission depuis la page des achats intégrés qui ne pourra jamais être soumis. Sans version de l'application dessus, chaque produit échoue à l'ajout avec « Unable to Add for Review », et soumettre le brouillon échoue avec « add an app version for the selected platform ». Aucun message ne dit que la version doit venir en premier. Nous avons essayé de scripter la correction, évidemment. L'API n'a aucune relation d'achat intégré sur une soumission. Nous avons essayé trois orthographes avant d'accepter que cette porte n'existe que dans l'interface, et le runbook le dit maintenant, poliment, pour que personne ne retente.

Le chiffre qui nous a enfin rendus heureux était quarante : une version de l'application, plus trente-neuf choses à acheter pour elle.

Refus numéro un : Apple veut mieux vous connaître

Le 11 septembre, Apple a répondu. L'objet était Guideline 2.1, Information Needed. Ce n'était ni un bug, ni un plantage, ni une infraction. Apple ne signalait aucun défaut. C'était le questionnaire qu'Apple envoie aux comptes avec peu d'historique de validation, accompagné d'une demande d'enregistrement d'écran. Voyez-y moins un refus qu'une vérification d'antécédents.

La liste comptait sept points : un enregistrement d'écran, à quoi sert l'application et pour qui, comment entrer et tout essayer, quels services extérieurs elle utilise, si quelque chose change selon la région, si elle est réglementée ou construite sur le matériel de quelqu'un d'autre, et comment fonctionnent les achats. C'étaient des questions raisonnables, comme le sont celles d'un premier rendez-vous. Le Resolution Center plafonne une réponse à 4 000 caractères et la nôtre en faisait 3 917, ce qui est la chose la plus longue que nous ayons jamais dite à quelqu'un que nous venions à peine de rencontrer.

Puis l'enregistrement. Apple voulait le vrai parcours à vraie vitesse sur un vrai téléphone : un lancement à froid, une partie solo, la Boutique et sa fenêtre d'achat, l'inscription, la connexion, un salon multijoueur et la suppression du compte. Quatre minutes d'images d'iPhone à 60 images par seconde pèsent environ 240 Mo, trop pour être jointes, alors ffmpeg les a comprimées à moins de 10 Mo en gardant l'interface lisible. Nous avons écrit toute la liste des plans, car si ce projet nous a appris une chose, c'est que nous oublierons comment nous avons fait quoi que ce soit.

Les réponses sont allées à deux endroits : la réponse dans le Resolution Center, et les notes de validation de la fiche de l'application, pour que chaque future soumission arrive en ayant déjà répondu aux questions. Les examinateurs suivent ces notes à la lettre. Écrivez-les pour quelqu'un qui n'a jamais vu votre application, qui a quarante secondes devant lui et qui tient un iPad. Les trois se révéleront vrais.

Une dernière chose est apparue pendant que nous répétions. La suppression d'un compte est restée bloquée sur « Suppression... » une fois, puis a marché au deuxième essai. Nous soupçonnons que le serveur s'était endormi, ce qui, pour un examinateur, ressemble exactement à un bouton cassé. Gardez votre serveur éveillé tant que l'examinateur est en ville.

Le grand nettoyage de printemps des marques

Tant qu'Apple avait notre attention, nous avons parcouru le jeu à la recherche de tout ce qui sonnait comme une marque. Les règles d'Apple sur les droits de contenu nous ont fait regarder, et ce que nous avons trouvé ne nous a pas plu. Deux personnages possédaient une « BMW 3 Series (CPO) » et une « Honda Civic ». Ces noms n'apportaient rien au jeu et invitaient beaucoup d'ennuis, ce sont donc maintenant une « Voiture de sport (CPO) » et une « Berline de base ». Le mot « monopoly » a quitté nos mots-clés App Store.

Puis il y a eu la Lambo. Il s'est avéré que le pion Lambo n'était pas du tout une voiture. C'était un émoji de drapeau à damier depuis le début, si bien que l'ancien nom promettait une supercar et livrait un drapeau de course. Financièrement parlant, ce n'est que du marketing. C'est maintenant le Chequered Flag. Le thème de plateau appelé The Tank est devenu Shark Pool.

La seule règle que nous n'avons pas enfreinte.

Nous avons changé les noms affichés et laissé chaque ID de produit exactement où il était. Le pion damier s'appelle toujours pawn.lambo sous le capot et le restera toujours. Ces ID sont en ligne sur les deux stores, liés à des prix et nommés dans les attributions de packs, et en renommer un aurait retiré l'article à tous ceux qui le possèdent déjà. Les noms, c'est du texte. Les ID, ce sont des contrats.

Refus numéro deux : l'incident de l'iPad

Le 17 septembre, Apple est revenu, et cette fois il avait trouvé de vrais problèmes. L'examinateur utilisait un iPad Air (11 pouces, M3) sous iPadOS 27, car les applications iPhone uniquement tournent sur iPad en mode compatibilité et y sont validées. Il y avait deux constats. Guideline 2.1(a) : toucher Continuer avec Apple ou Continuer avec Google affichait une erreur. Guideline 2.1(b) : l'examinateur ne trouvait pas nos 39 achats intégrés.

Les deux étaient de notre faute, et dans un sens c'était la même faute.

Le bug

Le plugin de connexion veut un objet options à chaque appel. Sur iOS, s'il manque, le plugin rejette avec « Missing provider or options » avant qu'aucune fenêtre de connexion n'ait pu apparaître. Sur Android, le même plugin suppose discrètement un objet vide et continue. Ainsi la même ligne de code est passée sans encombre à la validation de Google Play et s'est effondrée au premier tap côté Apple, sur chaque iPhone comme sur chaque iPad.

Un seul paramètre manquant. Android l'a pardonné. iOS non.

La Boutique que personne ne trouvait

Les achats étaient un malentendu à part qui s'est trouvé s'emboîter parfaitement avec le premier. Nos anciennes notes de validation disaient à l'examinateur qu'acheter nécessitait une connexion. La connexion était cassée. L'examinateur n'est donc jamais arrivé à la Boutique, dans une boucle fermée de notre propre fabrication.

Cela s'aggravait quand on regardait de plus près, car la Boutique avait trois autres façons de décevoir. Si la liste des produits se chargeait sans aucun package, la Boutique y voyait « rien à vendre » et masquait tout article que vous ne possédiez pas déjà. Les trois packs (5-Pawn, Themes et Starter Persona) étaient masqués depuis juin. Et un invité qui aurait acheté le 5-Pawn Bundle aurait payé sans rien débloquer, car notre serveur ne développait les packs en leurs articles que pour les joueurs connectés. Un invité, bien sûr, c'est exactement ce qu'est un examinateur. Prendre l'argent de quelqu'un et lui remettre une boîte vide est une belle leçon de finance. Ce n'est simplement pas celle que nous voulions donner.

La liste des correctifs, pour mémoire. Passer le paramètre. Faire en sorte que les deux fenêtres de connexion s'attachent à la fenêtre active de l'application sur iPad, car le plugin s'ancrait sur la première fenêtre et sur iPadOS ce n'est pas toujours la visible. Apprendre à la Boutique que zéro produit chargé veut dire « pas encore chargé » et non « vide ». Ramener les packs. Apprendre à l'application à développer les packs pour les invités. Et réécrire les notes de validation pour dire, en termes clairs, que rien ne nécessite de connexion pour acheter et voici le chemin exact jusqu'à la Boutique.

Le résultat fut la 1.2.9. Sa note de version s'ouvre avec les deux phrases qui nous ont le plus coûté : « Correctifs de connexion : Continuer avec Google affiche le sélecteur de compte sur un tap volontaire, et la connexion native ne plante plus. La Boutique liste toujours ses articles, même avant le chargement des prix. » Deux phrases, dix jours de notre vie.

Les builds 32 et 33 : celles dont on ne parle pas

On pourrait croire que nous n'avions qu'à publier le correctif. Nous l'avons fait, deux fois, et c'était faux les deux fois. Sur les builds TestFlight 32 et 33, la connexion Google marchait, mais Sign in with Apple, le bouton d'Apple dans le programme de test d'Apple, échouait avec AuthorizationError 1000.

La cause est évidente après coup et invisible avant. Les entitlements voyagent dans la signature du code. Notre script d'envoi archivait l'application avec la signature désactivée et laissait la signature à l'étape d'export, qui peut signer une application mais ne peut pas lui donner des entitlements qu'elle n'a jamais eus. L'entitlement de Sign in with Apple n'est jamais entré dans la build. En termes de développeur, l'application était sortie de la maison sans son pantalon.

Le script d'envoi signe désormais à l'archivage et refuse d'envoyer toute archive dont la signature n'a pas l'entitlement. Nous avons construit un videur. Il vérifie les papiers. Les builds 32 et 33 sont mortes, et la build 34, la correctement habillée, est celle que nous avons renvoyée à Apple.

Puis Apple a dit oui.

Ça chauffe

Le 24 septembre, des joueurs nous avaient dit que leur téléphone chauffait. Des iPhone 15, des iPhone 16 Pro Max, et la version web un peu tiède elle aussi. Nous aimerions dire que c'était le pur sex-appeal des intérêts composés. C'était un minuteur.

Le jeu faisait avancer un compteur une fois par seconde, dans tous les modes, et chaque tick refaisait le rendu de tout le jeu : le plateau, chaque case, chaque panneau. Éternellement. Pendant ce temps, les pions animés se redessinaient jusqu'à 120 fois par seconde sur les téléphones à écran rapide, pour dessiner une animation à 30 images par seconde. Le flou plein écran derrière chaque carte était recalculé à chaque image parce que le pion continuait de bouger dessous. Et les lueurs qui donnaient vie au plateau animaient des ombres portées, ce qui force un redessin à chaque image.

Nous avons corrigé les quatre. Le compteur est devenu un simple délai. Les pions ne dessinent que des images entières, et ils se mettent en pause quand ils sont hors écran, en mouvement réduit ou masqués par une carte. Les lueurs et les anneaux animent l'opacité et la position au lieu des ombres, et ils pulsent trois fois puis se reposent. Le travail à vide sur le plateau est passé de 624 ms à 15 ms sur dix secondes de test sans interface. Avec une carte ouverte et le pion dragon sur le plateau, il est passé de 1 188 ms à 11 ms. Nos animations font désormais preuve de plus de retenue que nous n'en avons montré nulle part ailleurs dans ce projet.

Cela est sorti en 1.2.10, titre « Des téléphones moins chauds », avec une règle de licenciement plus juste. Seul votre salaire s'arrête quand vous êtes mis à la porte. Vos revenus secondaires continuent de tomber, et les factures restent dues. Être renvoyé doit piquer. Cela ne doit pas effacer votre activité secondaire.

Le registre : chaque note de version, lue d'une traite

Nous gardons nos notes de version dans un seul fichier, le même qui alimente les deux stores. Lues dans l'ordre, elles forment un drôle de journal, alors le voici avec le sous-texte en plus. Les dates sont celles des commits. Le fichier saute directement de la 1.0.1 à la 1.2.6, donc tout ce qui s'est passé entre les deux s'est passé sans journal. Chaque numéro de version ci-dessous renvoie vers son propre article.

1.0.0

Première version de Moneyflow. Bâtissez votre empire financier dans l'immobilier, les actions et les entreprises. Échappez-vous au cycle 9 à 5, atteignez la Voie Rapide et poursuivez vos rêves.

Sincère, bref et un peu terrifié. Voyez comme c'était petit.

1.0.1

Google Play Achats web désormais disponibles sur playmoneyflow.com. Améliorations de stabilité et d'expérience utilisateur.

App Store Améliorations de stabilité et de performance. Corrections de divers bugs dans le panneau de l'état financier et dans les animations des dés.

Même version, deux jeux de notes. Les stores ont des idées différentes sur ce qu'on a le droit de dire aux gens, nous en gardons donc un jeu pour chacun en essayant de ne pas les mélanger.

1.2.6

Les impôts arrivent : impôt sur le revenu sur votre salaire, 15 % sur les revenus secondaires, 15 % de plus-values sur les ventes avec profit. Les personnages touchent désormais de vrais salaires américains de 2025. Les loyers et les rendements des entreprises suivent l'économie — maigres en crise, généreux en boom.

Le fisc arrive. Personne ne l'avait demandé et tout le monde en avait besoin. Chaque rendement du jeu est désormais jugé après impôts, car c'est le seul rendement qui compte.

1.2.7

Négociez les affaires, les offres et les propositions de prêt : un pile ou face 50/50, 20 % mieux ou 20 % moins bien. Choisissez quel bien vendre lors d'une Surenchère et quels actifs partent dans un divorce — ou signez un Contrat de mariage.

Le marchandage dans sa première forme innocente. Aussi la première apparition du Contrat de mariage, ce qui en dit long sur nos préoccupations.

1.2.8 7 sept.

Marchandez deux fois : négociez, puis renégociez, mais l'autre partie peut se retirer (10 %, puis 15 %). Pas de divorce sans mariage, pas de vente d'actions sans actions. Le divorce partage votre patrimoine net, votre ex peut reprendre des prêts.

La romantique. Demandez deux fois et ils se vexent. Jusqu'à cette version, le paquet pouvait vous distribuer un divorce avant que vous soyez marié, ce qui est plus chaotique qu'une chapelle de Las Vegas. C'est aussi la version qui nous a menés à la porte d'Apple.

1.2.9 22 sept.

Correctifs de connexion : Continuer avec Google affiche le sélecteur de compte sur un tap volontaire, et la connexion native ne plante plus. La Boutique liste toujours ses articles, même avant le chargement des prix.

Écrite sous la contrainte, par deux refus et un paramètre manquant.

1.2.10 26 sept.

Des téléphones moins chauds : le jeu ne fait plus tourner votre appareil à plein régime pendant la partie. Les animations pulsent quelques fois puis s'arrêtent, et le plateau n'est plus redessiné chaque seconde. Licenciements plus justes : seul votre salaire s'arrête, les revenus annexes continuent, et les dépenses restent dues les jours de paie sautés.

Celle où nous avons cessé de donner de la fièvre à votre téléphone.

1.2.11 26 sept.

Nouveau dans le menu Acheter : un appartement en ville, un pressing et un motel de bord de route. … Chaque carte a sa propre illustration, et vos choix s'affichent juste dessous. Invitez vos amis dans un salon privé.

La version la plus chargée et l'une des plus éphémères, car la 1.2.12 est arrivée le soir même. Les salons privés sont la vedette pour quiconque a des amis : un hôte, deux à quatre places et un code à six caractères.

1.2.12 26 sept.

À court d'argent ? Vous choisissez désormais comment combler le manque et voyez à quel point la faillite est proche : prêts d'urgence d'affilée, capacité d'emprunt et jours de paie restants. Les prêts d'urgence coûtent moins cher que la carte.

La faillite a maintenant un compte à rebours, la façon la plus amicale que nous connaissions d'enseigner la peur. Les prêts d'urgence coûtent désormais moins cher que la carte de crédit, ce qui est plus que ce que la vraie vie fera pour vous. Corrigé aussi : les dés se lançaient tout seuls après la fermeture d'une carte, ce qui était soit un bug, soit notre fonctionnalité la plus passive-agressive.

1.3.0 27 sept.

24 nouvelles cartes, du motel de bord de route à une entreprise SaaS en passant par The Big Short, et des niveaux de rareté : des cartes peu communes et rares font leur apparition. Masquez une carte pour voir le plateau, puis touchez « Revenir à la carte ». Les licenciements et les urgences ne peuvent plus être ignorés.

Vingt-quatre nouvelles cartes, un système de rareté, et discrètement le changement le plus important du mois : les cartes arrivent désormais depuis le serveur. Nous y reviendrons plus bas.

1.3.1 27 sept.

Empruntez sur vos actifs : tout bien immobilier, entreprise ou action sans prêt peut désormais garantir un prêt moins cher, intérêts seuls, au taux du marché plus 0,5 %.

L'effet de levier, encore. C'est un jeu de finance et nous ne pouvons pas nous en empêcher. Elle a suivi la 1.3.0 plus tard le même jour.

1.4.0 1 oct.

Nouveaux bots Expert qui planifient chaque coup et lisent l'économie, et tous les bots peuvent désormais acheter des rêves, gagner et emprunter sur leurs actifs. L'économie compte davantage : les taux d'intérêt suivent le cycle d'expansion et de récession, la récession baisse vos impôts, et les loyers de vos biens montent en période d'expansion et baissent en récession.

Celle où les bots ont appris à gagner. Jusque-là aucun ne le pouvait, car aucun n'achetait jamais de rêve. Les bots Expert sont arrivés, l'économie s'est mise à faire bouger taux, impôts et loyers selon son humeur, et l'application a appris huit langues de plus.

1.4.1 1 oct.

… Les hypothèques se remboursent désormais sur 25 ans, les prêts professionnels sur 15 et les prêts auto sur 6 ; les prêts bancaires sont en intérêts seuls et vous pouvez emprunter jusqu'à ce que vos remboursements atteignent 67 % de vos revenus. …

Les hypothèques ont enfin une date de fin. Le travail sur les prêts est arrivé après la découpe de la 1.4.0, il est donc sorti en 1.4.1 le même soir, avec une carte d'actualités sur l'écran d'accueil.

1.4.2 1 oct.

Un seul bug, corrigé moins de vingt minutes après la 1.4.1 : le bouton Prêt relais propose désormais le montant que la banque approuvera réellement. Elle n'a pas de notes de store à elle.

Le week-end des cinq versions.

Samedi 26 septembre

Dimanche 27 septembre

Heures de commit, heure de Sofia. Toutes les versions n'ont pas atteint tous les stores sous leur propre nom : sur Google Play, la 1.2.12 est partie en production à la place de la 1.2.11, et sur iOS elle a été soumise à sa place. Pendant le même week-end, le paquet a gagné 130 illustrations, dessinées en code.

La meilleure mise à jour est celle que personne n'a à approuver

À la fin de ce week-end, nous avions appris quelque chose d'utile. La partie la plus lente de la publication d'une mise à jour n'est pas de la construire. C'est d'attendre qu'un store la regarde. Alors la 1.3.0 a fait quelque chose d'un peu différent : elle a appris à l'application à accepter des livraisons.

Les nouvelles cartes arrivent désormais depuis nos serveurs, si bien que la plupart des nouveaux contenus n'ont plus besoin d'une mise à jour de l'application. Il a fallu une version de l'application pour installer la mécanique. Ensuite, de nouvelles cartes ne sont qu'un déploiement, traductions et illustrations comprises.

La Boutique fonctionne de la même façon. Apple valide un nouvel achat intégré séparément, sans nouvelle build, donc un nouveau pion n'a plus besoin non plus d'une nouvelle version.

La partie astucieuse, c'est le filet de sécurité. Personne ne reçoit jamais une carte que son application ne sait pas jouer, si bien que les anciennes et les nouvelles versions peuvent partager une table sans problème. Quand nous inventons une mécanique vraiment nouvelle, nous retournons dans la file comme tout le monde.

La même version a apporté la rareté, ce qui veut dire que certaines cartes apparaissent bien moins souvent que d'autres. À quel point, c'est notre secret, mais les plus rares apparaissent à peu près aussi souvent qu'une validation App Review passe du premier coup. Nous avons tiré une commune.

Le tableau des scores

Pour les amateurs de tableurs.

Ce que nous nous dirions au départ

Ce qui était une soirée de clics est maintenant un incrément, une note et une poignée de commandes par store. L'attente est la seule partie que nous ne pouvons pas automatiser. Tout le reste est passé dans cette liste.

  1. Mettez la version sur la soumission avant les achats intégrés. Apple vous laissera faire dans l'autre sens, puis refusera de dire pourquoi.
  2. Rédigez vos notes de validation pour un examinateur qui n'a jamais vu l'application. Il a quarante secondes et un iPad, et il suit les notes à la lettre. Donnez-lui le chemin exact vers tout.
  3. Ne mettez jamais de connexion devant votre Boutique. Les invités ont aussi un portefeuille, et les examinateurs sont des invités.
  4. Signez votre archive, puis faites en sorte que le script refuse d'en envoyer une qui ne porte pas ses entitlements. Construisez-vous un videur.
  5. Faites hurler les clés manquantes. La build 30 est partie sans sa clé de paiements et rien ne s'est plaint bruyamment, la Boutique était donc simplement vide. Un échec silencieux est un refus différé.
  6. Testez sur les deux plateformes même quand le code est partagé. Android a pardonné ce qu'iOS a refusé, et une seule ligne de code avait deux personnalités différentes.
  7. Renommez les produits, jamais leurs ID. Les noms, c'est du texte. Les ID, ce sont des contrats.
  8. Scriptez, rendez répétable, écrivez-le. L'API d'Apple a parfois simplement un moment d'absence, alors relancez avant de déboguer. Nos runbooks existent parce que nous avons tout oublié deux fois.
  9. Gardez des notes de version séparées quand les stores ont des règles séparées. Même version, phrases différentes.
  10. Livrez le contenu depuis le serveur et gardez la file du store pour les nouvelles mécaniques. La meilleure mise à jour est celle que personne n'a à approuver.
  11. Testez sur le matériel brûlant que vos joueurs possèdent vraiment. Le simulateur n'a jamais rougi. Un iPhone 16 Pro Max, si.
  12. Gardez le serveur éveillé tant que l'examinateur est en ville. Un serveur endormi ressemble exactement à un bouton cassé.

Allez, faites un tour avec nous

Moneyflow est gratuit sur l'App Store, gratuit sur Google Play et gratuit dans n'importe quel navigateur. Il n'y a aucune publicité, et vous n'avez pas besoin de compte pour commencer. Tout ce qui se trouve dans la Boutique est cosmétique. Rien n'y aide à gagner, ce qui, dans un jeu sur l'argent, est soit très principiel, soit une très mauvaise affaire.

Et ensuite ? Davantage de cartes, qui arrivent désormais depuis le serveur, davantage de façons de jouer entre amis et, si l'univers est clément, une semaine entière sans numéro de version.

Télécharger dans l'App Store Télécharger sur Google Play Jouer dans votre navigateur

On se retrouve sur le plateau.