#nativescript #angular2-nativescript #nativescript-plugin #nativescript-firebase
#nativescript #angular2-nativescript #nativescript-плагин #nativescript-firebase
Вопрос:
Я использую Firebase в своем приложении, и я заметил, что когда я активно вношу изменения и LiveSync обновляет приложение, иногда появляется сообщение «ошибка firebase.init: Firebase уже инициализирована». Это происходит, когда изменения не запускают перезапуск всего приложения (например, HTML-файла). Это полностью портит мое текущее состояние аутентификации и заставляет меня перезапускать приложение в любом случае.
Есть ли какой-нибудь способ, которым я могу это отследить или предотвратить? Я могу попытаться создать для него демонстрационное приложение, но я чувствую, что это могло с кем-то уже случиться.
Я просто использую стандартный firebase.init, как показано в документации в моем app.component, ничего особенного или отличающегося.
Комментарии:
1. github.com/EddyVerbruggen/nativescript-plugin-firebase/issues/…
Ответ №1:
Вместо использования в ngOnit App.component попробуйте инициализировать firebase при событии запуска приложения.
applicationOn(launchEvent, (args: LaunchEventData) => {
firebase.init({
// Optionally pass in properties for database, authentication and cloud messaging,
// see their respective docs.
}).then(
function () {
console.log("firebase.init done");
},
function (error) {
console.log("firebase.init error: " error);
}
);
});
Комментарии:
1. Поскольку я должен запустить этот код в main.ts, у меня нет доступа к своим сервисам, потому что приложение не запустилось, которое обрабатывает вход пользователя в систему и выход из нее.
2. Я смог добиться этого, используя отдельный onAuthStateChanged в app.component
firebase.addAuthStateListener(listener)
и проверив, имеет ли firebase.initialized значение true, тогда я вручную получаю текущего пользователя с помощью firebase.getCurrentUser(). Обходной путь, но он работает.