Como ya sabrás, no se permite usar el SDK de Applivery en Apps de producción que se publican en las tiendas oficiales de Apps (Google Play y Apple App Store). Además, es una práctica que no recomendamos y 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 (es decir: Live, Test, Staging o Quality).
Ten en cuenta que, para este tutorial, asumimos que ya sabes lo básico sobre cómo gestionar diferentes entornos usando Schemas y Configuraciones. Si no es así, te recomendamos que eches un vistazo a esta publicación de blog.
Paso 1 - Crea un archivo de Configuración (.xcconfig) para cada uno de tus entornos #
Ve a Archivo > Nuevo > Archivo… (Command + N) -> Configuración de Ajustes. Pon un nombre descriptivo para tu archivo de configuración. En este ejemplo, vamos a crear dos archivos de configuración diferentes: uno para el entorno de desarrollo (DEV.xcconfig
) y otro para el entorno de producción (PROD.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.dev
// Environment
ENVIRONMENT = PROD
// Applivery Options
APPLIVERY_TOKEN = 1gxC...66f
EXCLUDED_SOURCE_FILE_NAMES = Applivery.framework
Como no queremos que el SDK de Applivery se incluya 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 construcción de la App.
Además, aprovecharemos este archivo de configuración para definir un token diferente de Applivery SDK para cada entorno.
Paso 2 - Vincula los archivos de configuración con los Schemas de tu proyecto #
Ahora que tenemos varios archivos de configuración que describen las particularidades de tus entornos, es hora de vincularlos con los Schemas de tu proyecto. Para hacerlo, en la configuración de tu Proyecto, selecciona el archivo de configuración adecuado usando el menú desplegable de Configuraciones de Build.

Paso 3 (opcional) - Usa variables del archivo de configuración en tu código #

Además, para usar las Info.plist
claves en su código, puede 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)
Paso 4 - Usa el SDK de manera condicional #
Como la importación del SDK de Applivery ha sido excluida del archivo .xcconfig
cuando se construye el código, te recomendamos usar Swift Compiler Custom Flags y Active Compilation Conditions para declarar un conjunto de constantes que te ayudarán 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
}
}

Si no quieres usar archivos de configuración, también puedes excluir ciertos nombres de archivos fuente en los Ajustes de la build de tu proyecto para cada uno de los Schemas de tu proyecto.