Ich verwende ein Build-Schema für Prod und eines für Staging (mit 2 verschiedenen Bundle-IDs) und versuche, für jedes Schema eine separate GoogleService-Info.plist zu verwenden. Gibt es eine Möglichkeit, die Plist-Datei, die beim Initialisieren von GCM (und beim Goole-Login) verwendet werden soll, manuell auszuwählen? Oder ist es möglich, die Verwendung der Plist zu vermeiden und das Setup manuell durchzuführen?
Vielen Dank!
ios
google-cloud-messaging
google-signin
nwaxgui
quelle
quelle
Antworten:
Einzelheiten
Getestet am:
Lösung
Code
quelle
configure(options:)
. github.com/firebase/quickstart-ios/issues/5-r
, weitere Informationen: Befehl cp in Linux / Unix@inidonas Antwort hat bei mir funktioniert. Nachdem ich es auf Swift umgestellt habe
für Swift 2.3:
für Swift 3.0:
für Swift 4.0:
quelle
GoogleService-Info.plist
an verschiedenen Speicherorten oder möglicherweise zwei Dateien mit unterschiedlichen Namen. Könnten Sie bitte weitere Informationen darüber geben, wie die tatsächlichen Dateinamen lauten und wo sie platziert sind?Überprüfen Sie diesen Artikel: https://medium.com/@brunolemos/how-to-setup-a-different-firebase-project-for-debug-and-release-environments-157b40512164
Erstellen Sie unter Xcode zwei Verzeichnisse in Ihrem Projekt:
Debug
undRelease
. Legen Sie jedeGoogleService-Info.plist
Datei dort ab.Setzen Sie
AppDelegate.m
innerhalb derdidFinishLaunchingWithOptions
Methode den Code ein:Ziel c
Swift 4
Ziehen Sie beide
Debug
undRelease
Ordner per Drag & Drop aufBuild Phases > Copy Bundle Resources
:Das ist es :)
quelle
Analytics
Framework immer noch nicht. Sie können nicht erkennen, welches.plist
geladen wird.Debug
&Release
? Denn wenn ich dies versuche, habe ich immeralready configured crash.
die neuesten Anweisungen aus dem offiziellen Firebase-Dokument befolgt. Vielen DankIch denke, Sie können auf diese Weise Ihre GoogleService-Info.plist dynamisch konfigurieren und unterschiedliche Namen für unterschiedliche Bundle-IDs verwenden.
ciao Andreas
quelle
Could not locate configuration file: 'GoogleService-Info.plist'
Ich habe festgestellt, dass Google erwartet, dass der Dateiname im Code GoogleServiceInfo.plist lautet:
Der Schlüsselbegriff ist dieser
Also habe ich einfach dieselbe Datei kopiert und in verschiedene Verzeichnisse gestellt und an verschiedene Ziele gebunden:
quelle
Wenn das
GoogleService-Info.plist
einen anderen Namen hat, wirkt sich dies auf Ihre Analyseergebnisse aus. Firebase warnt Sie davor. https://github.com/firebase/firebase-ios-sdk/issues/230#issuecomment-327138180 . Aus diesem Grund liefert keine dieser Laufzeitlösungen die besten Analyseergebnisse.Es gibt zwei Lösungen, die sich nicht mit Analytics herumschlagen.
Verwenden Sie für jedes Schema ein anderes Ziel und ordnen Sie jede Version
GoogleService-Info.plist
einem eigenen Ziel zu. Siehe Zielmitgliedschaft im Dateiinspektor auf der rechten Seite in Xcode. Weitere Informationen Siehe diese Frage .Verwenden Sie ein Build-Phase-Skript, um die richtige Version von
GoogleService-Info.plist
in das Build-Verzeichnis zu kopieren . Ich verwende eine andere Bundle-ID für die Bereitstellung und Produktion. Dadurch kann ich beide Versionen der App parallel installieren. Dies bedeutet auch, dass ich mit dem folgenden Skript meine verschiedenenGoogleService-Info.plist
Dateien mit der Bundle-ID benennen kann . Beispielsweise:GoogleService-Info-com.example.app.plist
GoogleService-Info-com.example.app.staging.plist
Phase-Skript erstellen
Hinweis: Sie müssen sich
PATH_TO_CONFIG
entsprechend Ihrer Einrichtung ändern .quelle
Sie können es nicht vermeiden, die Liste mit Firebase zu verwenden. Die beste Lösung, die ich bisher für Sie gefunden habe, wäre, beide Dateien hinzuzufügen und zu benennen
und
Dann können Sie aus Ihrem Code die richtige Datei aufrufen. Auf diese Weise stürzt Ihre App nicht ab, wenn Sie die Datei nicht haben. Ersetzen Sie einfach FILENAME durch GoogleService-Info_prod oder GoogleService-Info_stage.
quelle
Spät, aber ich denke, ich muss diese Antwort posten, um neuen Entwicklern zu helfen. Ich habe einen sehr guten Artikel gefunden, der mein Problem behebt, und ich verspreche, dass er Ihnen auch helfen kann :)
Überprüfen Sie diesen Artikel, der auch Ihr Problem löst .
Schritt 1:
Kopieren Sie die Ihrer Firebase-Entwicklungsumgebung entsprechende GoogleService-Info.plist in das Dev- Verzeichnis. Kopieren Sie in ähnlicher Weise die GoogleService-Info.plist , die Ihrer Firebase-Produktionsumgebung entspricht, in das Prod- Verzeichnis. Deaktivieren Sie unter "Zu Zielen hinzufügen " die Option "Elemente bei Bedarf kopieren" und alle Ziele .
Schritt 2:
Wählen Sie im Xcode-Projektnavigator das App-Ziel aus. Wechseln Sie oben zur Registerkarte "Erstellungsphasen" und fügen Sie eine neue Ausführungsskriptphase hinzu . Nennen Sie die Phase "Firebase-Umgebung einrichten GoogleService-Info.plist" oder etwas in diesem Sinne und platzieren Sie sie vor dem Schritt "Bundle-Ressourcen kopieren" .
Schritt 3:
Implementieren Sie ein Shell-Skript, das die entsprechende GoogleService-Info.plist basierend auf der Build-Konfiguration in das App-Bundle kopiert . Kopieren Sie das folgende Shell-Skript und fügen Sie es in die gerade erstellte Ausführungsskriptphase ein:
quelle
Diese Antwort ist sehr stark von @abboods Antwort inspiriert , aber etwas genauer, wie es geht.
Für jedes Ihrer Ziele, z. B. dev, stg, prod:
GoogleService-Info.plist
Ordner herunter, der nach Ihrem Ziel benannt istAdd files to "your app"
GoogleService-Info.plist
, stellen Sie sicher ,Copy items if needed
undCreate groups
ausgewählt werden , überprüfen nur das entsprechende Ziel in der Liste der Ziele, und drücken SieAdd
Das ist es. Jetzt sollten Sie etwas Ähnliches wie diese Struktur haben
Wenn Sie ein Ziel erstellen, wird das richtige
GoogleService-Info.plist
verwendet.quelle
So geht's in Xamarin C #:
Denken Sie daran, den Firebase-Namespace einzuschließen:
quelle
Das ist meine Lösung!
Und das ist es!
quelle
Ich denke, es ist nicht möglich, dies ohne die Verwendung von zu erreichen.
GoogleService-Info.plist.
Bevor Sie mit der Integration Ihrer iOS-App in die Google Sign-In-Komponenten beginnen können, müssen Sie die Abhängigkeiten herunterladen und Ihr Xcode-Projekt konfigurieren. Und dieser Prozess zeigt, dass diesGoogleService-Info.plist
einen großen Einfluss hat.Also die Lösungen und Ideen hier in diesem SO-Frage können Ihnen also bei Ihrem Problem helfen. Verschieben Sie einfach die Hauptkopie
GoogleService-Info plist
der App aus der App in zwei separate Ordner und importieren Sie dann die Zielphasen "Dateien kopieren" auf jedem Ziel, um die zielspezifische Liste in den Ordner "Ressourcen" zu importieren.Überprüfen Sie auch diese SO-Frage , sie könnte Ihnen weitere Informationen / Ideen zu Ihrem Problem geben.
quelle
Mit Xcode 9.2 benötigte ich Dateien für beide Ziele mit dem Namen "googleServiceInfo.plist", die jedoch in verschiedenen Verzeichnissen abgelegt wurden. Das Verzeichnis / die Datei für jedes Ziel wurde unter "Phasen erstellen", "Bundle-Ressourcen kopieren" angegeben.
Das Obige war nicht meine bevorzugte Lösung, aber ich hatte zuvor versucht, verschiedene Dateinamen gemäß der Antwort von @ inidona zu verwenden, die in Swift 4 konvertiert wurde:
Leider wurden die Firebase-Fehlermeldungen dadurch nicht korrigiert. In dieser Frage: Firebase iOS SDK - Wenn Sie eine andere Konfigurationsdatei als GoogleService-Info.plist verwenden, wird eine Konsolenwarnung generiert, die das Originalposter durch Aktualisierung des Firebase -Pods behoben zu haben scheint. Ich habe dies jedoch nicht bestätigt.
quelle
Ich habe das dadurch gelöst:
quelle
Wenn einige von Ihnen in einen Fehler geraten und Xcode sich beschwert
Nachdem Sie die Antwort von @Knight Fighter angewendet haben , möchten Sie möglicherweise:
GoogleService-Info.plist
quelle