Saya menggunakan skema build untuk prod dan satu untuk pementasan (dengan 2 pengenal paket berbeda) dan saya mencoba menggunakan GoogleService-Info.plist terpisah untuk setiap skema. Apakah ada cara untuk memilih file plist secara manual untuk digunakan saat menginisialisasi GCM (dan login goole)? Atau mungkinkah menghindari penggunaan plist dan melakukan penyetelan secara manual?
Terima kasih!
ios
google-cloud-messaging
google-signin
nwaxgui
sumber
sumber
Jawaban:
Detail
Diuji pada:
Larutan
Kode
sumber
configure(options:)
. github.com/firebase/quickstart-ios/issues/5-r
, info lebih lanjut: perintah cp di Linux / UnixJawaban @inidona berhasil untuk saya. Setelah saya mengubahnya menjadi Swift
untuk Swift 2.3:
untuk Swift 3.0:
untuk Swift 4.0:
sumber
GoogleService-Info.plist
file berbeda di lokasi berbeda atau mungkin dua file dengan nama berbeda. Bisakah Anda memberikan beberapa informasi lebih lanjut tentang apa nama file yang sebenarnya dan di mana mereka ditempatkan?Periksa artikel ini: https://medium.com/@brunolemos/how-to-setup-a-different-firebase-project-for-debug-and-release-environments-157b40512164
Di Xcode, buat dua direktori di dalam proyek Anda:
Debug
danRelease
. Taruh setiapGoogleService-Info.plist
file di sana.Di
AppDelegate.m
, di dalamdidFinishLaunchingWithOptions
metode, masukkan kode:Objective-C
Cepat 4
Seret & lepas keduanya
Debug
danRelease
folder keBuild Phases > Copy Bundle Resources
:Itu dia :)
sumber
Analytics
kerangka kerja, Anda tidak dapat membedakan mana.plist
yang sedang dimuat.Debug
&Release
? Karena ketika saya mencoba melakukan ini saya selalu berakhir denganalready configured crash.
saya telah mengikuti instruksi terbaru dari dokumen resmi Firebase. Terima kasihSaya rasa Anda dapat menggunakan cara ini untuk mengonfigurasi GoogleService-Info.plist Anda secara dinamis dan menggunakan nama yang berbeda untuk pengenal paket yang berbeda.
ciao Andreas
sumber
Could not locate configuration file: 'GoogleService-Info.plist'
Saya perhatikan bahwa google mengharapkan nama file menjadi GoogleServiceInfo.plist dalam kode:
frase kuncinya adalah yang ini
Jadi saya cukup menyalin file yang sama dan memasukkannya ke dalam direktori yang berbeda, dan membatasinya ke target yang berbeda:
sumber
Jika
GoogleService-Info.plist
memiliki nama berbeda, itu akan memengaruhi hasil analitik Anda. Firebase akan memperingatkan Anda tentang ini. https://github.com/firebase/firebase-ios-sdk/issues/230#issuecomment-327138180 . Karena alasan ini, tidak ada solusi runtime ini yang akan memberikan hasil analitik terbaik.Ada dua solusi yang tidak akan mengacaukan Analytics.
Gunakan target yang berbeda dengan setiap skema dan kaitkan setiap versi
GoogleService-Info.plist
dengan targetnya sendiri. Lihat Target Membership di File inspector di sisi kanan Xcode. Untuk info lebih lanjut Lihat pertanyaan ini .Menggunakan script membangun fase untuk menyalin versi yang benar dari
GoogleService-Info.plist
ke direktori build. Saya menggunakan ID bundel yang berbeda untuk pementasan dan produksi. Ini memungkinkan saya memasang kedua versi aplikasi secara paralel. Ini juga berarti dengan skrip di bawah ini saya dapat memberi namaGoogleService-Info.plist
file saya yang berbeda dengan ID bundel. Sebagai contoh:GoogleService-Info-com.example.app.plist
GoogleService-Info-com.example.app.staging.plist
Buat Phase Script
Catatan: Anda harus berganti
PATH_TO_CONFIG
pakaian sesuai pengaturan Anda.sumber
Anda tidak dapat menghindari penggunaan plist dengan Firebase. Solusi terbaik yang saya temukan sejauh ini untuk Anda adalah dengan menambahkan kedua file dan menamainya
dan
Kemudian dari kode Anda, Anda dapat memanggil file yang benar. Dengan cara ini tidak akan merusak aplikasi Anda jika Anda tidak memiliki file tersebut. Cukup ganti FILENAME dengan GoogleService-Info_prod atau GoogleService-Info_stage.
sumber
Terlambat tetapi saya pikir saya harus memposting jawaban ini untuk membantu pengembang baru, saya menemukan artikel yang sangat bagus yang menjawab masalah saya dan saya berjanji itu dapat membantu Anda juga :)
Periksa artikel ini yang menyelesaikan masalah Anda juga.
Langkah 1:
Salin GoogleService-Info.plist yang sesuai dengan lingkungan pengembangan Firebase Anda ke dalam direktori Dev . Demikian pula, salin GoogleService-Info.plist yang sesuai dengan lingkungan produksi Firebase Anda di direktori Prod . Pastikan untuk menghapus centang "Salin item jika perlu" dan semua target di bawah "Tambahkan ke target" .
Langkah 2:
Di navigator proyek Xcode, pilih target aplikasi. Beralih ke tab Build Phases di bagian atas, lalu tambahkan New Run Script Phase . Beri nama fase "Setup Firebase Environment GoogleService-Info.plist" , atau sesuatu dari efek tersebut, dan letakkan sebelum langkah "Copy Bundle Resources" .
Langkah 3:
Terapkan skrip shell yang akan menyalin GoogleService-Info.plist yang sesuai ke dalam app bundle berdasarkan konfigurasi build. Salin dan tempel skrip shell berikut ke dalam fase skrip jalankan yang baru saja Anda buat:
sumber
Jawaban ini sangat terinspirasi oleh jawaban @abbood , tetapi sedikit lebih spesifik tentang cara melakukannya.
Untuk setiap target Anda, misalnya dev, stg, prod:
GoogleService-Info.plist
ke folder terpisah yang dinamai sesuai target AndaAdd files to "your app"
GoogleService-Info.plist
, pastikanCopy items if needed
danCreate groups
dipilih, centang hanya target yang sesuai di daftar target, dan tekanAdd
Itu dia. Sekarang Anda harus memiliki sesuatu yang mirip dengan struktur ini
Saat Anda membangun target, yang benar
GoogleService-Info.plist
akan digunakan.sumber
Berikut cara melakukannya di Xamarin C #:
Ingatlah untuk menyertakan namespace Firebase:
sumber
Ini solusi saya!
Dan itu dia!
sumber
Saya pikir itu tidak mungkin dicapai tanpa menggunakan
GoogleService-Info.plist.
Karena sebelum Anda dapat mulai mengintegrasikan aplikasi iOS Anda dengan komponen Masuk Google, Anda harus mengunduh dependensi dan mengonfigurasi proyek Xcode Anda. Dan proses ini menunjukkan bahwaGoogleService-Info.plist
ada faktor besar di dalamnya.Jadi solusi dan ide dalam pertanyaan SO ini dapat membantu Anda dengan masalah Anda. Baru saja memindahkan salinan utama dari
GoogleService-Info plist
aplikasi ke dalam 2 folder terpisah, lalu gunakan "Salin File" Fase Build pada setiap target untuk mengimpor plist spesifik target ke dalam folder Resources.Juga periksa pertanyaan SO ini , ini mungkin memberi Anda lebih banyak informasi / ide untuk masalah Anda.
sumber
Dengan Xcode 9.2, saya membutuhkan file untuk kedua target agar diberi nama "googleServiceInfo.plist" tetapi ditempatkan di direktori yang berbeda, dengan direktori / file untuk setiap target ditentukan dalam "Build Phases", "Copy Bundle Resources".
Di atas bukanlah solusi pilihan saya, tetapi saya sebelumnya telah mencoba menggunakan nama file yang berbeda di sepanjang baris jawaban @ inidona, dikonversi ke Swift 4:
Sayangnya, ini tidak memperbaiki pesan kesalahan Firebase. Dalam pertanyaan ini: Firebase iOS SDK - Menggunakan file konfigurasi selain GoogleService-Info.plist menghasilkan peringatan konsol yang tampaknya telah diperbaiki oleh pengepos asli dengan memperbarui Firebase Pod tetapi saya belum mengonfirmasi hal ini.
sumber
Saya menyelesaikan ini dengan ini:
sumber
Jika beberapa dari Anda mengalami kesalahan dan Xcode mengeluh
setelah menerapkan respons @Knight Fighter , Anda mungkin ingin:
GoogleService-Info.plist
sumber