Estou usando um esquema de compilação para prod e um para teste (com 2 identificadores de pacote diferentes) e estou tentando usar um GoogleService-Info.plist separado para cada esquema. Existe alguma maneira de selecionar manualmente o arquivo plist a ser usado ao inicializar o GCM (e o login do goole)? Ou é possível evitar o uso do plist e fazer a configuração manualmente?
Obrigado!
ios
google-cloud-messaging
google-signin
nwaxgui
fonte
fonte
Respostas:
Detalhes
Testado em:
Solução
Código
fonte
configure(options:)
. github.com/firebase/quickstart-ios/issues/5-r
, mais informações: comando cp no Linux / UnixA resposta de @inidona funcionou para mim. Depois de convertê-lo para Swift
para Swift 2.3:
para Swift 3.0:
para Swift 4.0:
fonte
GoogleService-Info.plist
arquivos diferentes em locais diferentes ou pode dois arquivos com nomes diferentes. Você poderia fornecer mais informações sobre quais são os nomes reais dos arquivos e onde eles estão localizados?Verifique este artigo: https://medium.com/@brunolemos/how-to-setup-a-different-firebase-project-for-debug-and-release-environments-157b40512164
No Xcode, crie dois diretórios dentro do seu projeto:
Debug
eRelease
. Coloque cadaGoogleService-Info.plist
arquivo lá.Em
AppDelegate.m
, dentro dodidFinishLaunchingWithOptions
método, coloque o código:Objective-C
Swift 4
Arraste e solte as pastas
Debug
eRelease
paraBuild Phases > Copy Bundle Resources
:É isso aí :)
fonte
Analytics
framework, você não pode dizer qual.plist
está sendo carregado.Debug
&Release
? Porque quando tento fazer isso, semprealready configured crash.
acabo com Segui as instruções mais recentes do documento oficial do Firebase. ObrigadoAcho que você pode usar essa maneira para configurar seu GoogleService-Info.plist de forma dinâmica e usar nomes diferentes para identificadores de pacote diferentes.
ciao andreas
fonte
Could not locate configuration file: 'GoogleService-Info.plist'
Percebi que o Google espera que o nome do arquivo seja GoogleServiceInfo.plist no código:
a frase chave é esta
Então, simplesmente copiei o mesmo arquivo, coloquei-o em diretórios diferentes e limitei-o a destinos diferentes:
fonte
Se o
GoogleService-Info.plist
tiver um nome diferente, ele afetará seus resultados analíticos. O Firebase irá avisá-lo sobre isso. https://github.com/firebase/firebase-ios-sdk/issues/230#issuecomment-327138180 . Por esse motivo, nenhuma dessas soluções de tempo de execução fornecerá os melhores resultados analíticos.Existem duas soluções que não mexem com o Analytics.
Use um destino diferente com cada esquema e associe cada versão do
GoogleService-Info.plist
seu próprio destino. Consulte Associação de destino no inspetor de arquivos no lado direito do Xcode. Para mais informações Veja esta questão .Use um script fase de construção para copiar a versão correta de
GoogleService-Info.plist
na pasta de compilação. Eu uso um ID de pacote diferente para teste e produção. Isso me permite ter as duas versões do aplicativo instaladas em paralelo. Isso também significa que, com o script abaixo, posso nomear meus diferentesGoogleService-Info.plist
arquivos com o ID do pacote. Por exemplo:GoogleService-Info-com.example.app.plist
GoogleService-Info-com.example.app.staging.plist
Script de fase de construção
Nota: você terá que mudar
PATH_TO_CONFIG
para se adequar à sua configuração.fonte
Você não pode evitar o uso do plist com o Firebase. A melhor solução que encontrei até agora para você seria adicionar os dois arquivos e nomeá-los
e
Então, a partir do seu código, você pode chamar o arquivo correto. Dessa forma, seu aplicativo não travará se você não tiver o arquivo. Basta substituir FILENAME por GoogleService-Info_prod ou GoogleService-Info_stage.
fonte
Atrasado mas acho que devo postar essa resposta para ajudar novos desenvolvedores, encontrei um artigo muito bom que resolveu meu problema e prometo que pode te ajudar também :)
Confira este artigo que resolve seu problema também.
Etapa 1:
copie o GoogleService-Info.plist correspondente ao seu ambiente de desenvolvimento Firebase no diretório Dev . Da mesma forma, copie o GoogleService-Info.plist correspondente ao seu ambiente de produção do Firebase no diretório Prod . Certifique-se de desmarcar “Copiar itens se necessário” e todos os alvos em “Adicionar aos alvos” .
Etapa 2:
no navegador de projetos Xcode, selecione o destino do aplicativo. Alterne para a guia Build Phases na parte superior e, em seguida, adicione uma New Run Script Phase . Nomeie a fase “Setup Firebase Environment GoogleService-Info.plist” ou algo parecido e coloque-o antes da etapa “Copy Bundle Resources” .
Etapa 3:
implemente um script de shell que copiará o GoogleService-Info.plist apropriado no pacote de aplicativos com base na configuração de compilação. Copie e cole o seguinte script de shell na fase de execução do script que você acabou de criar:
fonte
Essa resposta é muito inspirada na resposta de @abbood , mas um pouco mais específica sobre como fazê-lo.
Para cada um de seus alvos, por exemplo, dev, stg, prod:
GoogleService-Info.plist
para uma pasta separada com o nome de seu destinoAdd files to "your app"
GoogleService-Info.plist
, certifique-seCopy items if needed
eCreate groups
são selecionados, verifique apenas o destino correspondente na lista de alvos, e pressioneAdd
É isso aí. Agora você deve ter algo semelhante a esta estrutura
Quando você constrói um alvo, o correto
GoogleService-Info.plist
será usado.fonte
Veja como fazer no Xamarin C #:
Lembre-se de incluir o namespace do Firebase:
fonte
Esta é a minha solução!
E é isso!
fonte
Acho que não é possível alcançar sem usar o
GoogleService-Info.plist.
Porque antes de começar a integrar seu aplicativo iOS com os componentes do Google Sign-In, você deve baixar as dependências e configurar seu projeto Xcode. E esse processo mostra que issoGoogleService-Info.plist
tem um grande fator.Portanto, as soluções e ideias aqui nesta questão do SO podem ajudá-lo com seu problema. Apenas mova a cópia principal
GoogleService-Info plist
do aplicativo para 2 pastas separadas e, em seguida, use as fases de construção "Copiar arquivos" em cada destino para importar o plist específico de destino para a pasta Recursos.Verifique também isto questão do SO , ela pode lhe dar mais informações / idéias para o seu problema.
fonte
Com o Xcode 9.2, preciso que os arquivos de ambos os destinos sejam nomeados "googleServiceInfo.plist", mas colocados em diretórios diferentes, com o diretório / arquivo para cada destino especificado em "Build Phases", "Copy Bundle Resources".
A solução acima não era minha solução preferida, mas eu já havia tentado usar nomes de arquivo diferentes ao longo das linhas da resposta de @inidona, convertida para Swift 4:
Infelizmente, isso não corrigiu as mensagens de erro do Firebase. Nesta pergunta: Firebase iOS SDK - o uso de um arquivo de configuração diferente de GoogleService-Info.plist gera um aviso do console que o autor da postagem original parece ter corrigido ao atualizar o Firebase Pod, mas não o confirmei.
fonte
Eu resolvi isso com este:
fonte
Se algum de vocês cometer um erro e o Xcode reclamar
depois de aplicar a resposta do @Knight Fighter , você pode querer:
GoogleService-Info.plist
fonte