¿Es posible detectar en tiempo de ejecución que se ha instalado una aplicación a través de TestFlight Beta (enviada a través de iTunes Connect) frente a la App Store? Puede enviar un solo paquete de aplicaciones y tenerlo disponible a través de ambos. ¿Existe una API que pueda detectar de qué manera se instaló? ¿O el recibo contiene información que permita determinarlo?
ios
testflight
combinacional
fuente
fuente
Respuestas:
Para una aplicación instalada a través de TestFlight Beta, el archivo de recibo se nombra
StoreKit\sandboxReceipt
frente al habitualStoreKit\receipt
. Usando[NSBundle appStoreReceiptURL]
puede buscar sandboxReceipt al final de la URL.Tenga en cuenta que
sandboxReceipt
también es el nombre del archivo de recibo cuando se ejecutan compilaciones localmente y cuando las compilaciones se ejecutan en el simulador.fuente
[[[[NSBundle mainBundle] appStoreReceiptURL] lastPathComponent] isEqualToString:@"sandboxReceipt"]
(Verdadero si se ejecuta TestFlight binario distribuido) a través de Supertop / HaddadStoreKit/sandboxReceipt
cuando se instalan como una compilación de depuración a través de Xcode en el dispositivo o simulador. Por lo tanto, esto puede no distinguir con precisión las compilaciones de testflight de todas las demás compilaciones.Basándome en la respuesta de combinatoria, creé la siguiente clase auxiliar de SWIFT. Con esta clase puedes determinar si se trata de una compilación de depuración, prueba de vuelo o tienda de aplicaciones.
Usamos estos métodos en nuestro proyecto para proporcionar diferentes ID de seguimiento o cadenas de conexión por entorno:
O:
ACTUALIZACIÓN 05-02-2016: Un requisito previo para usar una macro de preprocesador como #if DEBUG es establecer algunos indicadores personalizados del compilador Swift. Más información en esta respuesta: https://stackoverflow.com/a/24112024/639227
fuente
-D DEBUG
bandera. Puede encontrar más información aquí .#if targetEnvironment(simulator)
usted determina si está ejecutando en un simulador. Entonces tengo las opciones Simulator / TestFlight / AppStore (que en mi caso es preferibleDebug
) :-)Versión moderna de Swift, que da cuenta de los simuladores (según la respuesta aceptada):
fuente
isTestFlight()
Actualizar
Esto ya no funciona. Utilice otro método.
Respuesta original
Esto también funciona:
Encontrado en Detectar si la aplicación iOS se descarga desde Testflight de Apple
fuente
Uso la extensión
Bundle+isProduction
en Swift 5.2:Luego:
fuente
Hay una forma en que lo uso para mis proyectos. Estos son los pasos.
En Xcode, vaya a la configuración del proyecto (proyecto, no objetivo) y agregue la configuración "beta" a la lista:
Luego, debe crear un nuevo esquema que ejecutará el proyecto en la configuración "beta". Para crear un esquema, vaya aquí:
Nombra este esquema como quieras. Debe editar la configuración de este esquema. Para hacer esto, toque aquí:
Seleccione la pestaña Archivo donde puede seleccionar
Build configuration
Luego, debe agregar una clave
Config
con el valor de$(CONFIGURATION)
la lista de propiedades de información de proyectos como esta:Entonces es solo la cuestión de lo que necesita en el código para hacer algo específico para la compilación beta:
fuente