Estoy usando un esquema de compilación para prod y uno para estadificación (con 2 identificadores de paquete diferentes) y estoy tratando de usar un GoogleService-Info.plist separado para cada esquema. ¿Hay alguna forma de seleccionar manualmente el archivo plist que se utilizará al inicializar GCM (y el inicio de sesión de goole)? ¿O es posible evitar el uso de plist y realizar la configuración manualmente?
¡Gracias!
ios
google-cloud-messaging
google-signin
nwaxgui
fuente
fuente
Respuestas:
Detalles
Probado en:
Solución
Código
fuente
configure(options:)
. github.com/firebase/quickstart-ios/issues/5-r
, más información: comando cp en Linux / UnixLa respuesta de @inidona funcionó para mí. Después de convertirlo en Swift
para Swift 2.3:
para Swift 3.0:
para Swift 4.0:
fuente
GoogleService-Info.plist
archivos diferentes en diferentes ubicaciones o puede que dos archivos con nombres diferentes? ¿Podría proporcionar más información sobre cuáles son los nombres reales de los archivos y dónde están ubicados?Consulte este artículo: https://medium.com/@brunolemos/how-to-setup-a-different-firebase-project-for-debug-and-release-environments-157b40512164
En Xcode, cree dos directorios dentro de su proyecto:
Debug
yRelease
. Coloque cadaGoogleService-Info.plist
archivo allí.En
AppDelegate.m
, dentro deldidFinishLaunchingWithOptions
método, ponga el código:C objetivo
Rápido 4
Arrastre y suelte ambas carpetas
Debug
yRelease
enBuild Phases > Copy Bundle Resources
:Eso es :)
fuente
Analytics
marco, no puede saber cuál.plist
se está cargando.Debug
&Release
? Porque cuando trato de hacer esto, siempre termino conalready configured crash.
que he seguido las últimas instrucciones del documento oficial de Firebase. GraciasCreo que puede usar esta forma para configurar su GoogleService-Info.plist de forma dinámica y usar diferentes nombres para diferentes identificadores de paquete.
ciao Andreas
fuente
Could not locate configuration file: 'GoogleService-Info.plist'
Me di cuenta de que Google espera que el nombre del archivo sea GoogleServiceInfo.plist en el código:
la frase clave es esta
Así que simplemente copié el mismo archivo y lo puse en diferentes directorios, y lo limité a diferentes destinos:
fuente
Si
GoogleService-Info.plist
tiene un nombre diferente, afectará los resultados de sus análisis. Firebase te advertirá sobre esto. https://github.com/firebase/firebase-ios-sdk/issues/230#issuecomment-327138180 . Por esta razón, ninguna de estas soluciones en tiempo de ejecución proporcionará los mejores resultados de análisis.Hay dos soluciones que no afectarán a Analytics.
Utilice un objetivo diferente con cada esquema y asocie cada versión de
GoogleService-Info.plist
con su propio objetivo. Consulte Membresía de destino en el inspector de archivos en el lado derecho de Xcode. Para obtener más información, consulte esta pregunta .Utilice un script de fase de compilación para copiar la versión correcta de
GoogleService-Info.plist
en el directorio de compilación. Utilizo un ID de paquete diferente para la puesta en escena y la producción. Esto me permite tener ambas versiones de la aplicación instaladas en paralelo. También significa que con el siguiente script puedo nombrar mis diferentesGoogleService-Info.plist
archivos con el ID del paquete. Por ejemplo:GoogleService-Info-com.example.app.plist
GoogleService-Info-com.example.app.staging.plist
Crear script de fase
Nota: Tendrá que cambiar
PATH_TO_CONFIG
para adaptarse a su configuración.fuente
No puede evitar usar plist con Firebase. La mejor solución que encontré hasta ahora para ti sería agregar ambos archivos y nombrarlos
y
Luego, desde su código, puede llamar al archivo correcto. De esta manera, no bloqueará su aplicación si no tiene el archivo. Simplemente reemplace FILENAME con GoogleService-Info_prod o GoogleService-Info_stage.
fuente
Tarde, pero creo que debo publicar esta respuesta para ayudar a los nuevos desarrolladores, encontré un muy buen artículo que resuelve mi problema y prometo que también puede ayudarlo :)
Consulte este artículo que también resuelve su problema.
Paso 1:
Copie el archivo GoogleService-Info.plist correspondiente a su entorno de desarrollo de Firebase en el directorio Dev . De manera similar, copie GoogleService-Info.plist correspondiente a su entorno de producción de Firebase en el directorio Prod . Asegúrese de desmarcar "Copiar elementos si es necesario" y todos los destinos en "Agregar a destinos" .
Paso 2:
En el navegador de proyectos Xcode, seleccione el destino de la aplicación. Cambie a la pestaña Build Phase en la parte superior, luego agregue una New Run Script Phase . Nombra la fase "Configurar el entorno de Firebase GoogleService-Info.plist" , o algo parecido, y colócalo antes del paso "Copiar recursos del paquete" .
Paso 3:
Implemente una secuencia de comandos de shell que copiará el archivo GoogleService-Info.plist apropiado en el paquete de aplicaciones según la configuración de la compilación. Copie y pegue el siguiente script de shell en la fase de ejecución del script que acaba de crear:
fuente
Esta respuesta está muy inspirada en la respuesta de @abbood , pero un poco más específica sobre cómo hacerlo.
Para cada uno de sus objetivos, por ejemplo, dev, stg, prod:
GoogleService-Info.plist
a una carpeta separada con el nombre de su objetivoAdd files to "your app"
GoogleService-Info.plist
, asegúreseCopy items if needed
yCreate groups
se seleccionan, marque sólo la diana correspondiente en la lista de objetivos, y pulseAdd
Eso es. Ahora debería tener algo similar a esta estructura
Cuando construyas un objetivo, se
GoogleService-Info.plist
usará el correcto .fuente
Aquí se explica cómo hacerlo en Xamarin C #:
Recuerde incluir el espacio de nombres de Firebase:
fuente
¡Esta es mi solución!
¡Y eso es!
fuente
Creo que no es posible lograrlo sin usar el
GoogleService-Info.plist.
Porque antes de que pueda comenzar a integrar su aplicación iOS con los componentes de Google Sign-In, debe descargar las dependencias y configurar su proyecto Xcode. Y este proceso muestra queGoogleService-Info.plist
tiene un gran factor.Entonces, las soluciones y la idea aquí en esta pregunta SO pueden ayudarlo con su problema. Simplemente movió la copia principal
GoogleService-Info plist
fuera de la aplicación a 2 carpetas separadas, luego usó las Fases de compilación "Copiar archivos" en cada objetivo para importar el plist específico del objetivo a la carpeta Recursos.También verifique esta pregunta SO , podría darle más información / idea sobre su problema.
fuente
Con Xcode 9.2, he necesitado que los archivos para ambos objetivos se llamen "googleServiceInfo.plist" pero se coloquen en directorios diferentes, con el directorio / archivo para cada objetivo especificado en "Fases de compilación", "Copiar recursos de paquete".
La anterior no era mi solución preferida, pero anteriormente había intentado usar diferentes nombres de archivo en la línea de la respuesta de @ inidona, convertida a Swift 4:
Desafortunadamente, esto no corrigió los mensajes de error de Firebase. En esta pregunta: SDK de Firebase iOS: el uso de un archivo de configuración que no sea GoogleService-Info.plist genera una advertencia de consola que parece que el póster original se solucionó al actualizar Firebase Pod, pero no lo he confirmado.
fuente
Resolví esto con esto:
fuente
Si alguno de ustedes cae en un error y Xcode se queja
después de aplicar la respuesta de @Knight Fighter , es posible que desee:
GoogleService-Info.plist
fuente