J'utilise un schéma de construction pour prod et un pour la mise en scène (avec 2 identifiants de bundle différents) et j'essaie d'utiliser un GoogleService-Info.plist distinct pour chaque schéma. Existe-t-il un moyen de sélectionner manuellement le fichier plist à utiliser lors de l'initialisation de GCM (et de la connexion goole)? Ou est-il possible d'éviter d'utiliser le plist et de faire la configuration manuellement?
Merci!
Réponses:
Détails
Testé sur:
Solution
Code
la source
configure(options:)
. github.com/firebase/quickstart-ios/issues/5-r
, plus d'informations: commande cp sous Linux / UnixLa réponse de @inidona a fonctionné pour moi. Après l'avoir converti en Swift
pour Swift 2.3:
pour Swift 3.0:
pour Swift 4.0:
la source
GoogleService-Info.plist
fichiers différents à des emplacements différents ou deux fichiers avec des noms différents. Pourriez-vous s'il vous plaît fournir des informations supplémentaires sur les noms de fichiers réels et où sont-ils placés?Consultez cet article: https://medium.com/@brunolemos/how-to-setup-a-different-firebase-project-for-debug-and-release-environments-157b40512164
Sur Xcode, créez deux répertoires dans votre projet:
Debug
etRelease
. Mettez chaqueGoogleService-Info.plist
fichier là-bas.Sur
AppDelegate.m
, à l'intérieur de ladidFinishLaunchingWithOptions
méthode, mettez le code:Objectif c
Swift 4
Faites glisser et déposez les deux dossiers
Debug
etRelease
vers leBuild Phases > Copy Bundle Resources
:C'est tout :)
la source
Analytics
framework, vous ne pouvez pas dire lequel.plist
est chargé.Debug
&Release
? Parce que quand j'essaye de faire ça, je finis toujours paralready configured crash.
avoir suivi les dernières instructions du document officiel Firebase. MerciJe pense que vous pouvez utiliser cette méthode pour configurer votre GoogleService-Info.plist de manière dynamique et utiliser différents noms pour différents identifiants de bundle.
ciao Andreas
la source
Could not locate configuration file: 'GoogleService-Info.plist'
J'ai remarqué que Google s'attend à ce que le nom de fichier soit GoogleServiceInfo.plist dans le code:
la phrase clé est celle-ci
J'ai donc simplement copié le même fichier et l'ai mis dans différents répertoires, et je l'ai lié à différentes cibles:
la source
Si le
GoogleService-Info.plist
a un nom différent, cela affectera vos résultats d'analyse. Firebase vous en avertira. https://github.com/firebase/firebase-ios-sdk/issues/230#issuecomment-327138180 . Pour cette raison, aucune de ces solutions d'exécution ne fournira les meilleurs résultats d'analyse.Il existe deux solutions qui ne gâcheront pas Analytics.
Utilisez une cible différente avec chaque schéma et associez chaque version de
GoogleService-Info.plist
à sa propre cible. Voir l' appartenance cible dans l' inspecteur de fichiers sur le côté droit dans Xcode. Pour plus d'informations, consultez cette question .Utilisez un script de phase de construction pour copier la version correcte de
GoogleService-Info.plist
dans le répertoire de construction. J'utilise un ID de bundle différent pour la mise en scène et la production. Cela me permet d'installer les deux versions de l'application en parallèle. Cela signifie également qu'avec le script ci-dessous, je peux nommer mes différentsGoogleService-Info.plist
fichiers avec l'ID du bundle. Par exemple:GoogleService-Info-com.example.app.plist
GoogleService-Info-com.example.app.staging.plist
Script de phase de construction
Remarque: vous devrez changer
PATH_TO_CONFIG
en fonction de votre configuration.la source
En retard mais je pense que je dois poster cette réponse pour aider les nouveaux développeurs, j'ai trouvé un très bon article qui résout mon problème et je vous promets qu'il pourra vous aider aussi :)
Consultez cet article qui résout votre problème aussi.
Étape 1:
Copiez le fichier GoogleService-Info.plist correspondant à votre environnement de développement Firebase dans le répertoire Dev . De même, copiez le GoogleService-Info.plist correspondant à votre environnement de production Firebase dans le répertoire Prod . Assurez-vous de décocher "Copier les éléments si nécessaire" et toutes les cibles sous "Ajouter aux cibles" .
Étape 2:
dans le navigateur de projet Xcode, sélectionnez la cible de l'application. Passez à l'onglet Phases de construction en haut, puis ajoutez une nouvelle phase de script d'exécution . Nommez la phase «Configurer l'environnement Firebase GoogleService-Info.plist» , ou quelque chose dans ce sens, et placez-la avant l' étape «Copier les ressources du bundle» .
Étape 3:
implémentez un script shell qui copiera le fichier GoogleService-Info.plist approprié dans le bundle d'applications en fonction de la configuration de compilation. Copiez et collez le script shell suivant dans la phase d'exécution du script que vous venez de créer:
la source
Vous ne pouvez pas éviter d'utiliser le plist avec Firebase. La meilleure solution que j'ai trouvée jusqu'à présent pour vous serait d'ajouter les deux fichiers et de le nommer
et
Ensuite, à partir de votre code, vous pouvez appeler le fichier correct. De cette façon, votre application ne plantera pas si vous n'avez pas le fichier. Remplacez simplement FILENAME par GoogleService-Info_prod ou GoogleService-Info_stage.
la source
Cette réponse est très inspirée de @abbood , mais un peu plus précise sur la façon de le faire.
Pour chacune de vos cibles, par exemple dev, stg, prod:
GoogleService-Info.plist
dans un dossier distinct nommé d'après votre cibleAdd files to "your app"
GoogleService-Info.plist
, assurez-vous queCopy items if needed
etCreate groups
sont sélectionnés, cochez uniquement la cible correspondante dans la liste des cibles et appuyez surAdd
C'est tout. Maintenant, vous devriez avoir quelque chose de similaire à cette structure
Lorsque vous construisez une cible, la bonne
GoogleService-Info.plist
sera utilisée.la source
Voici comment procéder dans Xamarin C #:
N'oubliez pas d'inclure l'espace de noms Firebase:
la source
C'est ma solution!
Et c'est tout!
la source
Je pense qu'il n'est pas possible d'y parvenir sans utiliser le
GoogleService-Info.plist.
car avant de pouvoir commencer à intégrer votre application iOS avec les composants de connexion Google, vous devez télécharger les dépendances et configurer votre projet Xcode. Et ce processus montre que celaGoogleService-Info.plist
a un facteur important.Ainsi, les solutions et l'idée ici dans cette question SO peuvent vous aider avec votre problème. Je viens de déplacer la copie principale du
GoogleService-Info plist
sortie de l'application dans 2 dossiers séparés, puis d'utiliser les phases de construction "Copier les fichiers" sur chaque cible pour importer le fichier plist spécifique à la cible dans le dossier Resources.Vérifiez également cette question SO , elle pourrait vous donner plus d'informations / d'idées sur votre problème.
la source
Avec Xcode 9.2, j'ai eu besoin que les fichiers pour les deux cibles soient nommés "googleServiceInfo.plist" mais placés dans des répertoires différents, avec le répertoire / fichier pour chaque cible spécifié dans "Build Phases", "Copy Bundle Resources".
Ce qui précède n'était pas ma solution préférée, mais j'avais déjà essayé d'utiliser différents noms de fichiers dans le sens de la réponse de @ inidona, convertie en Swift 4:
Malheureusement, cela n'a pas corrigé les messages d'erreur Firebase. Dans cette question: Firebase iOS SDK - L'utilisation d'un fichier de configuration autre que GoogleService-Info.plist génère un avertissement de console que l'affiche d'origine semble avoir corrigé en mettant à jour le pod Firebase mais je ne l'ai pas confirmé.
la source
J'ai résolu ceci par ceci:
la source
Si certains d'entre vous tombent dans une erreur et que Xcode se plaint
après avoir appliqué la réponse @Knight Fighter , vous souhaiterez peut-être:
GoogleService-Info.plist
la source
J'ai donc réfléchi à la même question et en utilisant certaines idées de publications précédentes, dont certaines publient des applications avec
GoogleServices-Info.plist
pour tous les environnements dans toutes les applications et c'est un peu préoccupant.J'ai mis au point une solution extensible qui copie le
GoogleSerives-Info.plist
fichier au moment de la construction. De plus, cette approche peut prendre en charge autant d'environnements que vous le souhaitez avec la possibilité de personnaliser et de suivre une convention simple, ce qui facilite la gestion.Tout d'abord, j'ai trois environnements,
debug
(pour le débogage dans le simulateur et le périphérique whist et la coupe active du code),staging
(pour le déploiement en vol d'essai) etrelease
pour la production.La première étape consiste à créer votre (vos) configuration (s):
Sélectionnez "Produit" -> "Schéma" -> "Modifier le schéma" et dupliquez / créez-en un nouveau si nécessaire. Parcourez chaque Schéma et attribuez sa configuration respective à partir du menu déroulant "Build Configuration" dans chacune des catégories:
Je vais un peu plus loin et décoche «exécuter» pour les schémas qui doivent être distribués, c'est-à-dire la version et la mise en scène, et inversement décoche «archiver» pour le débogage. Vous devez faire ce qui a du sens pour vous.
Sous les phases de construction, ajoutez le script d'exécution suivant (la
CONFIGURATIONS_FOLDER
variable peut être personnalisée comme vous le souhaitez - assurez-vous simplement d'utiliser le même nom de dossier à l'étape suivante):Dans le dossier de configuration que vous avez choisi ("Firebase" dans l'exemple ci-dessus), imbriquez des dossiers pour chaque configuration nommés exactement de la même manière que sa configuration respective (sensible à la casse), à l'intérieur desquels placez les
GoogleServices-Info.plist
fichiers respectifs comme suit:Enfin, j'aime également m'assurer qu'un niveau racine
GoogleServices-Info.plist
n'est pas ajouté au projet par accident, alors j'ajoute ce qui suit à mon .gitignore.la source