Disons que j'ai une version gratuite et payante de l'application. La version payante est un sur-ensemble de la version gratuite concernant les fonctionnalités disponibles pour les utilisateurs, ce qui signifie que la version payante aura toutes les fonctionnalités de l'application gratuite en plus.
Existe-t-il un modèle pour basculer la disponibilité des fonctionnalités en fonction d'un indicateur qui se charge au démarrage (par exemple, gratuit / payant)?
Je n'aime pas l'idée d'avoir les blocs de code suivants partout:
if(isFreeVersion){
// ...
} else {
// ...
}
Avoir 2 branches git distinctes pour chaque version n'est pas une option car cela signifierait la maintenance de 2 (ou plus) sources de code, semble peu pratique en général et est discuté plus ici: Maintenir deux versions logicielles distinctes à partir de la même base de code dans le contrôle de version .
Y a-t-il un moyen de le faire, tout en ayant une base de code unique et sans joncher le code avec des instructions conditionnelles qui vérifient l'indicateur gratuit / payant?
Je suis sûr que cela a été discuté à plusieurs reprises auparavant et je suis sûr qu'il existe des modèles pour aborder ce problème, mais je ne le trouve pas.
Nous utilisons Android / Java.
if
vérifications pour masquer les contrôles des fonctionnalités interdites ou d'avoir une boîte de dialogue contextuelle lorsque l'utilisateur essaie de faire ce qu'il n'est pas autorisé à faire. J'espère trouver un moyen d'éviter de nombreuses conditions dans le code