É possível detectar em tempo de execução que um aplicativo foi instalado através do TestFlight Beta (enviado pelo iTunes Connect) versus a App Store? Você pode enviar um único pacote de aplicativos e disponibilizá-lo por ambos. Existe uma API que pode detectar de que maneira foi instalada? Ou o recibo contém informações que permitem determinar isso?
ios
testflight
combinatória
fonte
fonte
Respostas:
Para um aplicativo instalado através do TestFlight Beta, o arquivo de recebimento é nomeado
StoreKit\sandboxReceipt
versus o usualStoreKit\receipt
. Usando[NSBundle appStoreReceiptURL]
você pode procurar sandboxReceipt no final do URL.Observe que
sandboxReceipt
também é o nome do arquivo de recebimento ao executar compilações localmente e para compilações executadas no simulador.fonte
[[[[NSBundle mainBundle] appStoreReceiptURL] lastPathComponent] isEqualToString:@"sandboxReceipt"]
(Verdadeiro se estiver executando o binário distribuído TestFlight) via Supertop / HaddadStoreKit/sandboxReceipt
quando instalado como uma compilação de depuração via Xcode no dispositivo ou simulador. Portanto, isso pode não distinguir com precisão as compilações do testflight de todas as outras compilações.Com base na resposta combinatória, criei a seguinte classe auxiliar SWIFT. Com essa classe, você pode determinar se é uma compilação de depuração, teste de vôo ou appstore.
Usamos esses métodos em nosso projeto para fornecer diferentes IDs de rastreamento ou cadeia de conexão por ambiente:
OU:
ATUALIZAÇÃO 05-02-2016: Um pré-requisito para usar uma macro de pré-processador como #if DEBUG é definir alguns sinalizadores personalizados do Swift Compiler. Mais informações nesta resposta: https://stackoverflow.com/a/24112024/639227
fonte
-D DEBUG
bandeira. Mais informações podem ser encontradas aqui .#if targetEnvironment(simulator)
você determina se está executando em um simulador. Então, eu tenho as opções Simulator / TestFlight / AppStore (que é no meu caso preferível aDebug
) :-)Versão Swift moderna, responsável por simuladores (com base na resposta aceita):
fonte
isTestFlight()
Atualizar
Isso não funciona mais. Use outro método.
Resposta original
Isso também funciona:
Encontrado em Detectar se o aplicativo iOS foi baixado do Testflight da Apple
fonte
Eu uso a extensão
Bundle+isProduction
no Swift 5.2:Então:
fonte
Existe uma maneira de usá-lo em meus projetos. Aqui estão os passos.
No Xcode, vá para as configurações do projeto (projeto, não alvo) e adicione a configuração "beta" à lista:
Então você precisa criar um novo esquema que executará o projeto na configuração "beta". Para criar um esquema, clique aqui:
Nomeie esse esquema como desejar. Você deve editar as configurações deste esquema. Para fazer isso, toque aqui:
Selecione a guia Arquivo, onde você pode selecionar
Build configuration
Em seguida, você precisa adicionar uma chave
Config
com valor$(CONFIGURATION)
à lista de propriedades de informações do projeto, como esta:Então é exatamente o que você precisa no código para fazer algo específico à versão beta:
fonte