Bu sayfada, uygulamanızda birden fazla Firebase projesinin nasıl kullanılacağı açıklanmaktadır.
Birçok uygulamada yalnızca tek bir Firebase projesi ve varsayılan kurulum gereklidir Başlarken kılavuzlarında açıklanan adımları izleyin. Ne zaman yararlı olabileceğine dair örnekler kullanmak için şunlara dikkat edin:
- Geliştirme ortamınızı farklı Firebase projeleri kullanacak şekilde ayarlama tek bir kullanıcı adı ve şifre kullanın.
- Uygulamanızdaki birden çok Firebase projesinin içeriğine erişme.
Farklı ortamları destekleme
Yaygın kullanım alanlarından biri, geliştirme işleminiz için ayrı Firebase projelerini desteklemektir. ve üretim ortamlarıyla bağlantılıdır.
Web ve Admin SDK'lar doğrudan ilk kullanıma hazırlama işlevlerine değer iletme. Bu SDK için çalışma zamanı kontrolünü kullanarak geliştirme veya üretim yapılandırması değişkenlerini seçin.
Android ve Apple platformları (ve bunların Unity ve C++ sarmalayıcıları) normalde yüklenir
bir yapılandırma dosyasından yapılandırma: Apple'da GoogleService-Info.plist
platformu ve Android'de google-services.json
. Bu dosyalar bir
seçenekleri nesnesini (FIROption
veya FirebaseOptions
)
Firebase uygulama nesnesi (FIRApp
veya FirebaseApp
).
Bu platformlar için, ortamlar arasında geçiş genellikle Her biri için farklı yapılandırma dosyaları kullanarak derleme zamanı kararı bahsedeceğim.
Apple uygulamanızda birden fazla ortamı destekleme
FirebaseApp.configure()
varsayılan olarak GoogleService-Info.plist
dosyasını yükler
pakete dahil edilir. Geliştirme ve üretim ortamlarınız
Xcode'da ayrı hedefler olarak yapılandırıldığında, şunları yapabilirsiniz:
GoogleService-Info.plist
dosyanın ikisini de indir- İki dosyayı farklı dizinlerde depolayın
- Her ikisini de Xcode projenize ekleyin
- Search Ads 360'ı kullanarak farklı dosyaları farklı hedeflerle ilişkilendirmek Üyelik paneli:
Derlemeler tek bir hedefin parçasıysa, en iyi seçenek her ikisini de
yapılandırma dosyalarına ilişkin benzersiz adlar (ör. GoogleService-Info-Free.plist
ve
GoogleService-Info-Paid.plist
) tıklayın. Sonra, çalışma zamanında hangi plist'in yükleneceğini seçin.
Bu, aşağıdaki örnekte gösterilmektedir:
// Load a named file. let filePath = Bundle.main.path(forResource: "MyGoogleService", ofType: "plist") guard let fileopts = FirebaseOptions(contentsOfFile: filePath!) else { assert(false, "Couldn't load config file") } FirebaseApp.configure(options: fileopts).
Android uygulamanızda birden fazla ortamı destekleme
Android'de, google-services.json
dosyası Android dizesi olarak işlenir
kaynaklar için Google Hizmetleri gradle eklentisinden yararlanabilirsiniz. Örneğin,
web sitesindeki Google Hizmetler Eklentisi dokümanlarında hangi kaynakların
JSON dosyası işleniyor.
Farklı dosyalar için birden fazla google-services.json
dosyanız olabilir
derleme varyantları
Her biri için ada sahip özel dizinlere google-services.json
dosya yerleştirerek
varyantını görürsünüz. Örneğin, "geliştirme" ve
"yayınla" şu şekilde düzenlenebilir:
app/
google-services.json
src/development/google-services.json
src/release/google-services.json
...
Daha fazla bilgi edinmek için şu adresteki Google Hizmetleri Eklentisi dokümanlarına bakın: JSON dosyasını ekleme.
Bu kaynaklar daha sonra FirebaseInitProvider, Bu API, uygulama kodunuzdan önce çalışır ve Firebase API'lerini bahsedeceğim.
Bu sağlayıcı yalnızca bilinen adlara sahip kaynakları okuduğu için, seçeneği, dize kaynaklarını Google Hizmetleri gradle eklentisi. Bunu aşağıdaki şekilde yapabilirsiniz:
google-services
eklentisi,build.gradle
kök dosyanızdan kaldırılıyorgoogle-services.json
, projenizden siliniyor- Dize kaynaklarını doğrudan ekleme
apply plugin: 'com.google.gms.google-services'
,build.gradle
uygulamanızdan siliniyor
Uygulamanızda birden fazla proje kullanın
Bazen aynı API'leri kullanarak farklı projelere erişmeniz gerekir. Örneğin, birden fazla veritabanı örneğine erişme. Çoğu durumda, kurulacak Tüm Firebase için yapılandırmayı yöneten Firebase uygulama nesnesi API'ler. Bu nesne normal kurulumunuzun bir parçası olarak başlatıldı. Ancak, tek bir uygulamadan birden çok projeye erişmek istiyorsanız bir başvurulacak farklı Firebase uygulama nesnesi bulunmalıdır. İnsanların ilk kullanıma hazırlamanız önerilir.
Her iki durumda da, Firebase uygulaması için yapılandırma verileri. Tüm belgeler seçenekler için API referans dokümanlarında bulunabilir: şu sınıflarda:
- Hızlı:
FirebaseOptions(googleAppID:gcmSenderID:)
- Android:
FirebaseOptions.Builder
- Web:
initializeApp()
- C++:
firebase::App::Create
- Unity:
FirebaseApp.Create
- Node.js:
initializeApp
- Java:
FirebaseOptions.Builder
Bir uygulamada birden fazla projeyi desteklemek için bu sınıfların kullanımı gösterilmektedir aşağıdaki örneklerde:
Swift
// Configure with manual options. Note that projectID and apiKey, though not // required by the initializer, are mandatory. let secondaryOptions = FirebaseOptions(googleAppID: "1:27992087142:ios:2a4732a34787067a", gcmSenderID: "27992087142") secondaryOptions.apiKey = "AIzaSyBicqfAZPvMgC7NZkjayUEsrepxuXzZDsk" secondaryOptions.projectID = "projectid-12345" // The other options are not mandatory, but may be required // for specific Firebase products. secondaryOptions.bundleID = "com.google.firebase.devrel.FiroptionConfiguration" secondaryOptions.trackingID = "UA-12345678-1" secondaryOptions.clientID = "27992087142-ola6qe637ulk8780vl8mo5vogegkm23n.apps.googleusercontent.com" secondaryOptions.databaseURL = "https://myproject.firebaseio.com" secondaryOptions.storageBucket = "myproject.appspot.com" secondaryOptions.androidClientID = "12345.apps.googleusercontent.com" secondaryOptions.deepLinkURLScheme = "myapp://" secondaryOptions.storageBucket = "projectid-12345.appspot.com" secondaryOptions.appGroupID = nil
Kotlin+KTX
// Manually configure Firebase Options. The following fields are REQUIRED: // - Project ID // - App ID // - API Key val options = FirebaseOptions.Builder() .setProjectId("my-firebase-project") .setApplicationId("1:27992087142:android:ce3b6448250083d1") .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw") // .setDatabaseUrl(...) // .setStorageBucket(...) .build()
Java
// Manually configure Firebase Options. The following fields are REQUIRED: // - Project ID // - App ID // - API Key FirebaseOptions options = new FirebaseOptions.Builder() .setProjectId("my-firebase-project") .setApplicationId("1:27992087142:android:ce3b6448250083d1") .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw") // setDatabaseURL(...) // setStorageBucket(...) .build();
Web
// The following fields are REQUIRED: // - Project ID // - App ID // - API Key const secondaryAppConfig = { projectId: "<PROJECT_ID>", appId: "<APP_ID>", apiKey: "<API_KEY>", // databaseURL: "...", // storageBucket: "...", };
C++
firebase::AppOptions secondary_app_options;
// API key, app ID, and project ID are always required.
secondary_app_options.set_api_key("<API_KEY>");
secondary_app_options.set_app_id("<GOOGLE_APP_ID>");
secondary_app_options.set_project_id("<PROJECT_ID>");
// The following options are specific to individual Firebase products
// and may not always be required.
secondary_app_options.set_database_url("<DATABASE_URL>");
secondary_app_options.set_messaging_sender_id("<SENDER_ID>");
secondary_app_options.set_storage_bucket("<STORAGE_BUCKET>");
Unity
Firebase.AppOptions secondaryAppOptions = new Firebase.AppOptions {
ApiKey = "<API_KEY>",
AppId = "<GOOGLE_APP_ID>",
ProjectId = "<PROJECT_ID>"
};
Node.js
const secondaryServiceAccount = require('./path/to/serviceAccountKey.json'); // All required options are specified by the service account, // add service-specific configuration like databaseURL as needed. const secondaryAppConfig = { credential: cert(secondaryServiceAccount), // databaseURL: 'https://<DATABASE_NAME>.firebaseio.com' };
Java
FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");
FirebaseOptions secondaryAppConfig = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
Bu seçenekler nesnesini başlattıktan sonra onu kullanarak bir ek Firebase uygulama örneği. Gösterilen tüm örneklerde aşağıda secondary dizesini kullanırız. Bu ad, ve diğer örneklerden ayırt edilebilmesi açısından önemlidir. varsayılan örneğidir ([DEFAULT] adında). diğer Firebase projesinin amaçlanan kullanımı.
Aşağıdaki snippet'ler alternatif bir Realtime Database ile bağlantı kurmayı göstermektedir (diğer Firebase özelliklerinin API'leri de aynı kalıbı izler).
Swift
// Configure an alternative FIRApp. FirebaseApp.configure(name: "secondary", options: secondaryOptions) // Retrieve a previous created named app. guard let secondary = FirebaseApp.app(name: "secondary") else { assert(false, "Could not retrieve secondary app") } // Retrieve a Real Time Database client configured against a specific app. let secondaryDb = Database.database(app: secondary)
Kotlin+KTX
// Initialize secondary FirebaseApp. Firebase.initialize(context = this, options, "secondary") // Retrieve secondary FirebaseApp. val secondary = Firebase.app("secondary") // Get the database for the other app. val secondaryDatabase = Firebase.database(secondary)
Java
// Initialize with secondary app FirebaseApp.initializeApp(this /* Context */, options, "secondary"); // Retrieve secondary FirebaseApp FirebaseApp secondary = FirebaseApp.getInstance("secondary");
Web
// Initialize another app with a different config const secondaryApp = firebase.initializeApp(secondaryAppConfig, "secondary"); // Access services, such as the Realtime Database // secondaryApp.database();
C++
firebase::App* secondary_app = firebase::App::Create(secondary_app_options, "Secondary");
firebase::database::Database* secondary_database = firebase::database::Database::GetInstance(secondary_app);
Unity
var secondaryApp = Firebase.FirebaseApp.Create(secondaryAppOptions, "Secondary"));
var secondaryDatabase = Firebase.Database.FirebaseDatabase.getInstance(secondaryApp);
Node.js
// Initialize another app with a different config const secondary = initializeApp(secondaryAppConfig, 'secondary'); // Access services, such as the Realtime Database // const secondaryDatabase = secondary.database();
Java
// Initialize another app with a different config
FirebaseApp secondaryApp = FirebaseApp.initializeApp(secondaryAppConfig, "secondary");
// Retrieve the database.
FirebaseDatabase secondaryDatabase = FirebaseDatabase.getInstance(secondaryApp);
Analytics için güvenilir raporlama sağlayın
Google Analytics, etkinlikleri uygulama başlatma akışının en erken aşamalarında toplar.
bazı durumlara örnek olarak verilebilir. İçinde
Bu durumlarda Firebase, Android kaynağını veya
Doğru Google uygulamasını aramak için Apple platformlarında GoogleService-Info.plist
Etkinliklerin depolanacağı kimlik. Bu nedenle, varsayılan olarak
yapılandırma yöntemlerini kullanın.
Çalışma zamanı yapılandırması gerekiyorsa lütfen aşağıdaki uyarıları göz önünde bulundurun:
- AdMob kullanıyor ve önerilen şekilde başlangıçta reklam isteğinde bulunuyorsanız kaynağı kullanılmadığında mobil reklamlarla ilgili bazı Analytics verilerini kaçırmak en iyi uygulamaları paylaşacağım.
- Uygulamanızın dağıtılan her varyantı için yalnızca tek bir Google uygulama kimliği sağlayın.
Örneğin, uygulamanızın 1. sürümünü belirli bir
GOOGLE_APP_ID
ile gönderirseniz sonra farklı bir kimlikle sürüm 2'yi yükleyebilirsiniz. Bu durum, verinin bırakılmasına neden olabilir. - Apple platformlarında aşağıdaki durumlarda GoogleService-Info.plist öğesini projenize eklemeyin:
çalışma zamanında farklı yapılandırmalar sağlamanız durumunda
GOOGLE_APP_ID
belirgin bir değişiklik gösterir ve Analytics'in kaybedilmesine neden olur.