¿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\sandboxReceiptfrente al habitualStoreKit\receipt. Usando[NSBundle appStoreReceiptURL]puede buscar sandboxReceipt al final de la URL.Tenga en cuenta que
sandboxReceipttambié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/sandboxReceiptcuando 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 DEBUGbandera. 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+isProductionen 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 configurationLuego, debe agregar una clave
Configcon 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