1.1.2 (47): fix subscription purchase button fallback

Remove legacy CONSUMABLE fallback from monthlyProduct — when the
subscription fails to load, the UI now shows the retry state instead
of silently offering the legacy one-time product for purchase.
Legacy purchasers retain access via hasActiveSubscription() as before.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alexandrev-tibco
2026-05-21 19:58:57 +02:00
parent 89b35dc4ae
commit d09e8a7bee
16 changed files with 25 additions and 37 deletions
+2 -2
View File
@@ -860,7 +860,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = MealMood/Resources/MealMood.entitlements; CODE_SIGN_ENTITLEMENTS = MealMood/Resources/MealMood.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 47;
DEVELOPMENT_TEAM = 2825Q76T7H; DEVELOPMENT_TEAM = 2825Q76T7H;
GENERATE_INFOPLIST_FILE = NO; GENERATE_INFOPLIST_FILE = NO;
INFOPLIST_FILE = MealMood/Resources/Info.plist; INFOPLIST_FILE = MealMood/Resources/Info.plist;
@@ -965,7 +965,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = MealMood/Resources/MealMood.entitlements; CODE_SIGN_ENTITLEMENTS = MealMood/Resources/MealMood.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
CURRENT_PROJECT_VERSION = 46; CURRENT_PROJECT_VERSION = 47;
DEVELOPMENT_TEAM = 2825Q76T7H; DEVELOPMENT_TEAM = 2825Q76T7H;
GENERATE_INFOPLIST_FILE = NO; GENERATE_INFOPLIST_FILE = NO;
INFOPLIST_FILE = MealMood/Resources/Info.plist; INFOPLIST_FILE = MealMood/Resources/Info.plist;
+2 -2
View File
@@ -15,9 +15,9 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.1.1</string> <string>1.1.2</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>46</string> <string>47</string>
<key>GADApplicationIdentifier</key> <key>GADApplicationIdentifier</key>
<string>ca-app-pub-1549720748100858~9985112590</string> <string>ca-app-pub-1549720748100858~9985112590</string>
<key>ITSAppUsesNonExemptEncryption</key> <key>ITSAppUsesNonExemptEncryption</key>
+1 -7
View File
@@ -120,13 +120,7 @@ final class StoreManager: ObservableObject {
if let match = products.first(where: { $0.id == Self.monthlyProductId && $0.type == .autoRenewable }) { if let match = products.first(where: { $0.id == Self.monthlyProductId && $0.type == .autoRenewable }) {
return match return match
} }
if let match = products.first(where: { $0.type == .autoRenewable }) { return products.first(where: { $0.type == .autoRenewable })
return match
}
if let match = products.first(where: { $0.id == Self.legacyOneTimeProductId }) {
return match
}
return products.first
} }
var debugProductIds: [String] { productIds } var debugProductIds: [String] { productIds }
+2 -2
View File
@@ -15,9 +15,9 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>XPC!</string> <string>XPC!</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.1.1</string> <string>1.1.2</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>46</string> <string>47</string>
<key>NSExtension</key> <key>NSExtension</key>
<dict> <dict>
<key>NSExtensionPointIdentifier</key> <key>NSExtensionPointIdentifier</key>
+1 -1
View File
@@ -1 +1 @@
NEU in 1.1.0: Premium ist jetzt ein Monatsabo. Bestehende Einmalkäufer behalten ihren vollen Zugang automatisch. MealMood Premium: unbegrenzte Gerichte, Planung & Export für 2,99 €/Monat. Bestehende Einmalkäufer behalten ihren vollen Zugang automatisch.
+2 -3
View File
@@ -1,4 +1,3 @@
Neu in Version 1.1.0: Korrekturen in Version 1.1.2:
Premium ist jetzt ein monatliches Abo — unbegrenzte Gerichte, Planung und Export für 2,99 €/Monat. Fehler behoben, bei dem die Premium-Abonnement-Schaltfläche auf einigen Geräten nicht korrekt angezeigt wurde.
• Bestehende Einmalkäufer behalten ihren vollen Zugang automatisch — keine Aktion erforderlich.
+1 -1
View File
@@ -1 +1 @@
NEW in 1.1.0: Premium is now a monthly subscription. Existing lifetime purchasers keep full access automatically. MealMood Premium: unlimited dishes, weekly planning & export for $2.99/month. Existing lifetime purchasers keep full access automatically.
+2 -3
View File
@@ -1,4 +1,3 @@
New in 1.1.0: Fixes in 1.1.2:
Premium is now a monthly subscription — unlimited dishes, planning, and export for $2.99/month. Fixed an issue where the Premium subscription button would not appear correctly on some devices, preventing users from subscribing.
• Existing lifetime purchasers keep full access automatically, no action needed.
+1 -1
View File
@@ -1 +1 @@
NUEVO en 1.1.0: Premium ahora es una suscripción mensual. Los compradores previos conservan su acceso completo automáticamente. MealMood Premium: platos ilimitados, planificación y exportación por 2,99 €/mes. Los compradores previos conservan su acceso completo automáticamente.
+2 -3
View File
@@ -1,4 +1,3 @@
Novedades en 1.1.0: Correcciones en 1.1.2:
Premium ahora es una suscripción mensual — platos ilimitados, planificación y exportación por 2,99 €/mes. Solucionado un problema por el que el botón de suscripción Premium no aparecía correctamente en algunos dispositivos, impidiendo realizar la compra.
• Los usuarios con compra única previa conservan el acceso completo de forma automática.
+1 -1
View File
@@ -1 +1 @@
NOUVEAU v1.1.0 : Premium est désormais un abonnement mensuel. Les acheteurs existants conservent automatiquement leur accès complet. MealMood Premium : plats illimités, planification et export pour 2,99 €/mois. Les acheteurs existants conservent automatiquement leur accès complet.
+2 -3
View File
@@ -1,4 +1,3 @@
Nouveautés dans la version 1.1.0 : Correctifs dans la version 1.1.2 :
Premium est désormais un abonnement mensuel — plats illimités, planification et export pour 2,99 €/mois. Correction d'un problème où le bouton d'abonnement Premium ne s'affichait pas correctement sur certains appareils.
• Les utilisateurs ayant effectué un achat unique conservent automatiquement leur accès complet.
+1 -1
View File
@@ -1 +1 @@
NOVITÀ v1.1.0: Premium è ora un abbonamento mensile. Gli acquirenti precedenti mantengono automaticamente l'accesso completo. MealMood Premium: piatti illimitati, pianificazione ed esportazione a 2,99 €/mese. Gli acquirenti precedenti mantengono automaticamente l'accesso completo.
+2 -3
View File
@@ -1,4 +1,3 @@
Novità nella versione 1.1.0: Correzioni nella versione 1.1.2:
Premium è ora un abbonamento mensile — piatti illimitati, pianificazione ed esportazione a 2,99 €/mese. Risolto un problema per cui il pulsante di abbonamento Premium non veniva visualizzato correttamente su alcuni dispositivi.
• Gli utenti con acquisto singolo precedente mantengono automaticamente l'accesso completo.
+1 -1
View File
@@ -1 +1 @@
NOVIDADE 1.1.0: Premium agora é uma assinatura mensal. Compradores anteriores mantêm o acesso completo automaticamente. MealMood Premium: pratos ilimitados, planejamento e exportação por R$ 2,99/mês. Compradores anteriores mantêm o acesso completo automaticamente.
+2 -3
View File
@@ -1,4 +1,3 @@
Novidades na versão 1.1.0: Correções na versão 1.1.2:
Premium agora é uma assinatura mensal — pratos ilimitados, planejamento e exportação por R$ 2,99/mês. Corrigido um problema em que o botão de assinatura Premium não aparecia corretamente em alguns dispositivos.
• Usuários com compra única anterior mantêm o acesso completo automaticamente.