Como ya sabrás, no está permitido usar el SDK de Applivery en Apps de producción que se lancen en las Tiendas de Apps oficiales (Google Play y Apple App Store). Además, es una práctica que no recomendamos y que podría causar el rechazo de tu App durante el proceso de revisión.
Este tutorial te guiará a través del proceso de excluir condicionalmente el SDK de Applivery según el entorno de la App (por ejemplo, Live, Test, Staging o Quality).
Para este tutorial, consideramos que ya conoces los conceptos básicos de cómo gestionar diferentes entornos usando Esquemas y Configuraciones. Si no es así, te recomendamos que eches un vistazo al siguiente artículo del blog.
Ve a File > New > File… (Command + N) -> Configuration Settings file y elige un nombre descriptivo para tu archivo de configuración. Para este ejemplo, crearemos dos archivos de configuración diferentes: uno para el entorno de desarrollo (DEV.xcconfig) y otro para el entorno de producción (PROD.xcconfig).
DEV.xcconfig
// App Info
APP_NAME = My Awesome App [DEV]
BUNDLE_IDENTIFIER = com.acme.awesome.dev
// Environment
ENVIRONMENT = DEV
// Applivery Options
APPLIVERY_TOKEN = b7C...2I6
PROD.xcconfig
// App Info
APP_NAME = My Awesome App [PROD]
BUNDLE_IDENTIFIER = com.acme.awesome.prod
// Environment
ENVIRONMENT = PROD
// Applivery Options
APPLIVERY_TOKEN = 1gxC...66f
EXCLUDED_SOURCE_FILE_NAMES = Applivery.framework
Como no queremos que el SDK de Applivery esté incluido en el entorno de Producción, hemos añadido la siguiente línea de código EXCLUDED_SOURCE_FILE_NAMES = Applivery.framework que excluirá los archivos fuente del SDK de Applivery durante el proceso de compilación de la App.
Además, aprovecharemos este archivo de configuración para definir también un token del SDK de Applivery diferente para cada uno de los entornos.
Ahora que tenemos varios archivos de configuración que describen las particularidades de tus entornos, es momento de vincularlos con los esquemas de tu proyecto. Para hacerlo, en los ajustes de Configuraciones del proyecto, selecciona el archivo de configuración apropiado usando el menú desplegable Build Configurations.


Además, para usar las claves del Info.plist en tu código, puedes seguir el siguiente enfoque:
// Get values from Info.plist
public func InfoDictionary(_ key: String) -> String {
guard let constant = Bundle.main.infoDictionary?[key] as? String else {
return "CONSTANT NOT FOUND"
}
return constant
}
// Example of usage of the above function when starting the Applivery SDK
applivery.start(token:InfoDictionary("APPLIVERY_TOKEN"), appStoreRelease: false)
Dado que el import del SDK de Applivery ha sido excluido desde el archivo .xcconfig al compilar el código, recomendamos usar Swift Compiler Custom Flags y Active Compilation Conditions para declarar un conjunto de constantes que te ayuden a iniciar el SDK de Applivery de forma condicional. Aquí tienes un ejemplo:
#if !APPSTORE
import Applivery
#endif
struct AppliveryWrapper {
func setup() {
#if !APPSTORE && !DEBUG
let applivery = Applivery.shared
applivery.logLevel = .info
applivery.start(token:InfoDictionary("APPLIVERY_TOKEN"), appStoreRelease: false)
#endif
}
}

Alternativamente, si no quieres usar archivos de configuración, puedes excluir ciertos nombres de archivos fuente en los Build Settings de tu proyecto para cada uno de tus esquemas.
Recuerda probar tu App a fondo en todos los entornos para asegurarte de que el SDK de Applivery está correctamente excluido de las Builds de producción.