Firebase 앱이 Android에서 이미 초기화되었는지 확인하는 방법
다음과 같이 처음 호출하면 작동하지만 "FirebaseApp name [DEFAULT]가 이미 존재합니다!"인 후속 호출에서는 실패합니다.
public FirebaseDatabase conn(Context c) {
FirebaseOptions options = new FirebaseOptions.Builder()
.setApiKey("key")
.setDatabaseUrl("url")
.setApplicationId("ID")
.build();
/////I tried Try and Catch with no success//////
FirebaseApp app = FirebaseApp.initializeApp(c, options);
/// for this : FirebaseApp app = FirebaseApp.initializeApp(c, options, "some_app");
//// will fail with "FirebaseApp name some_app already exists!"
return FirebaseDatabase.getInstance(app);
}
위의 모든 것은 두 번째 Firebase 앱에 연결하려는 시도입니다.
파이어베이스 웹에서는 이미 초기화되었는지 확인합니다.
if (firebase.apps.length === 0) {
firebase.initializeApp({});
}
v9에서는 Firebase는 트리 흔들림을 개선하기 위해 모듈화되어 있습니다.따라서 더 이상 전체 앱을 가져오고apps
자산 AFAIK.대신 다음과 같은 방법을 사용할 수 있습니다.
import { initializeApp, getApps, getApp } from "firebase/app";
getApps().length === 0 ? initializeApp(firebaseConfig) : getApp();
https://firebase.google.com/docs/reference/js/v9/app.md#getapps (문서 참조)
Android에서 승인된 답변과 동일한 방법을 알고 싶은 경우:
if (FirebaseApp.getApps(context).isEmpty()) {
FirebaseApp.initializeApp(context);
}
계측 테스트 환경에서는 다음 컨텍스트를 사용합니다.
InstrumentationRegistry.getContext()
파이어베이스 버전 9
import { initializeApp, getApp } from "firebase/app";
const createFirebaseApp = (config = {}) => {
try {
return getApp();
} catch () {
return initializeApp(config);
}
};
const firebaseApp = createFirebaseApp({/* your config */})
Firebase 어플리케이션인스턴스를 취득하려고 하면, 초기화가 되어 있는지, 그렇지 않은 경우,IllegalStateException
.
try{
FirebaseApp.getInstance();
}
catch (IllegalStateException e)
{
//Firebase not initialized automatically, do it manually
FirebaseApp.initializeApp(this);
}
앱을 초기화하기 전에 실행 중인 앱 목록을 확인하는 것이 좋을 것 같습니다.각 SDK에는 이 어레이를 가져오는 방법이 있습니다.안드로이드에서는getApps
:
https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp.html
그러면 앱이 이미 초기화되었는지 확인할 수 있습니다.
저 같은 경우에는 어레이 길이를 확인하고 (javascript/web sdk를 사용하고 있기 때문에 Android는 조금 다르다고 생각합니다) 0이면 새로운 앱을 초기화했습니다.
나도 비슷한 문제에 직면했다.이미 초기화된 앱을 삭제하여 아래의 문제를 해결하였습니다.
// Access your firebase app
let app = firebase.app();
// Delete your app.
app.delete(app);
솔루션은 웹에 유효합니다.
firebase admin SDK for java에서 앱이 없는 경우에만 앱을 초기화합니다.
if (FirebaseApp.getApps().isEmpty()) {
FirebaseApp.initializeApp();
}
안드로이드는 잘 모르겠지만 싱글톤 방식을 사용하는 것은 어떨까요?JS에서는 이 작업을 수행할 수 있습니다.이게 도움이 됐으면 좋겠는데
// Config file
import * as firebase from "firebase";
const config = {...};
export default !firebase.apps.length ? firebase.initializeApp(config) : firebase.app();
// Other file
import firebase from '../firebase';
import * as firebase from "firebase/app";
firebase.apps.map(e => e.name); // Give you an array of initialized apps
dotNet FirebaseAdmin SDK를 사용하는 사용자용
if (FirebaseApp.GetInstance("[DEFAULT]") == null)
{
var createdApp = FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.FromFile("private-key.json")
});
}
같은 문제에 직면하여 다음과 같이 해결했습니다.
- 응용 프로그램의 var를 생성하고 null로 초기화합니다.
- 초기화 중에 응용 프로그램 참조
- 다시 초기화하기 전에 확인하세요.
//global variable
var firebaseResumeDownloadAdd = null;
//inside function check before initializing
if(firebaseResumeDownloadAdd==null){
firebaseResumeDownloadAdd =
firebase.initializeApp(functions.config().firebase);
}
Daniel Laurindo의 답변에 따라 달라집니다.
if (FirebaseApp.getApps(context).size != 0) {
}
ES6+를 위한 보다 깨끗한 솔루션은
if (!firebase.apps.length) {
...
}
사용하기 쉬운 Java 8 Stream 및 옵션 기능 탑재.
아래의 코드명
FirebaseApp.getApps()
.stream()
.filter(firebaseApp ->
firebaseApp.getName().equals("APP_NAME"))
.findFirst()
.orElseGet(() -> FirebaseApp.initializeApp(firebaseOptions, "APP_NAME"));
Platform Check를 사용하여 환경에 따라 초기화합니다.
파이어베이스 웹에서 이미 초기화되었는지 확인합니다.
MYAPP() 부팅 시 다음 스니펫을 사용합니다.
import 'dart:io';
void main() async {
WidgetFlutterBinding.확실히Initialized();
if ( Platform . is Android | Platform.isIOS) {
await Firebase.initializeApp();
} 기타 {
if (Firebase.apps.isEmpty) {
await Firebase.initializeApp(
// connect for web to firebase
options:firebaseOptions
}
} runApp(계속 MyApp());
}
Nativescript를 사용하여 Android | iOS용 하이브리드 모바일 앱을 구축하는 경우 다음 스크립트를 사용할 수 있습니다.
import * as firebase from 'nativescript-plugin-firebase';
_initFirebase(): Promise<any> {
if (!(firebase as any).initialized) {
return firebase.init({}).then(
() => {
console.info('firebase started...');
},
(error) => console.error(error)
);
}
}
언급URL : https://stackoverflow.com/questions/37652328/how-to-check-if-a-firebase-app-is-already-initialized-on-android
'programing' 카테고리의 다른 글
이 메모리 누전 문제를 해결하려면 어떻게 해야 하나요? (0) | 2022.09.23 |
---|---|
Windows 10에서 Composer를 업데이트하는 방법 (0) | 2022.09.14 |
URL에서 fragment ID(해시 번호 이후의 값)를 취득하려면 어떻게 해야 합니까? (0) | 2022.09.14 |
선택적 매개 변수를 사용하는 PHP 함수 (0) | 2022.09.14 |
pip 설치에서 각 괄호는 무엇을 의미합니까? (0) | 2022.09.14 |