1.1.5: conversion funnel overhaul

Paywall:
- Redesigned PremiumView with yearly/monthly/lifetime side by side
- 7-day free trial badge with savings % vs monthly
- Social proof line, BEST VALUE highlight on yearly
- StoreManager: new yearlyProduct, lifetimeProduct, yearlySavingsPercent, hasTrialAvailable

Funnel:
- Paywall step added to onboarding (PaywallStepView)
- Contextual modal at dish limit (replaces silent block)
- Visible "X/15 dishes" counter in DishListView
- BottomPromoBanner rotates AdMob with internal "Remove ads" CTA (1 in 4)
- Free dish limit lowered 20 → 15
- Review prompt earlier: 2 weeks → 1 week

Analytics:
- paywall_viewed/dismissed with source + seconds_on_screen
- dish_limit_hit, week_limit_hit, free_trial_started events
- Every PremiumView call site now passes its source

StoreKit:
- MealMood.storekit: added yearly $19.99 + 7d trial, monthly trial, lifetime $39.99
- AppStoreConnect-1.1.5-setup.md with full manual setup instructions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alexandrev-tibco
2026-06-11 22:21:36 +02:00
parent 72770801d3
commit b45cb2a530
31 changed files with 1067 additions and 104 deletions
@@ -199,7 +199,31 @@
"premium_purchase_cancelled" = "L'achat a été annulé.";
"premium_purchase_failed" = "L'achat a échoué. Veuillez réessayer.";
"tag_selector_empty" = "Aucun tag disponible pour le moment";
"premium_limit_dishes" = "Limite du plan gratuit atteinte : 20 plats";
"premium_limit_dishes" = "Limite du plan gratuit atteinte : 15 plats";
"dish_counter_label" = "plats";
"dish_counter_upgrade_hint" = "Touchez pour des plats illimités avec Premium";
"dish_limit_modal_title" = "Vous êtes en feu ! 🔥";
"dish_limit_modal_message" = "Vous avez rempli votre plan gratuit. Débloquez les plats illimités, règles avancées et plus avec Premium.";
"dish_limit_modal_cta" = "Voir Premium";
"dish_limit_modal_dismiss" = "Plus tard";
"onboarding_paywall_title" = "Essayez MealMood Premium gratuitement";
"onboarding_paywall_subtitle" = "Tout débloqué pendant 7 jours — sans engagement.";
"onboarding_paywall_cta_trial" = "Démarrer l'essai gratuit";
"onboarding_paywall_cta_skip" = "Continuer en gratuit";
"remove_ads_promo_title" = "Fatigué des pubs ?";
"remove_ads_promo_subtitle" = "Passez Premium et plus jamais de publicité.";
"remove_ads_promo_cta" = "Supprimer les pubs";
"premium_yearly" = "Annuel";
"premium_year" = "an";
"premium_lifetime" = "À vie";
"premium_one_time" = "paiement unique";
"premium_lifetime_badge" = "PAIEMENT UNIQUE";
"premium_buy_lifetime" = "Acheter à vie";
"premium_save_badge" = "ÉCONOMISEZ %@";
"premium_best_value" = "MEILLEUR CHOIX";
"premium_trial_badge" = "7 jours gratuits";
"premium_trial_note" = "Gratuit 7 jours, puis %@. Annulez à tout moment.";
"premium_social_proof" = "Adoré par les familles ★★★★★";
"premium_limit_rules" = "Les règles de tags avancées sont réservées au Premium";
"premium_limit_future_weeks" = "Le plan gratuit permet de planifier jusqu'à la semaine prochaine";