Вот фрагмент кода из приложения чата, разработанного с помощью Firebase, и реагирует на нативный.
on = callback =>
this.ref
.limitToLast(20)
.on('child_added', snapshot => callback(this.parse(snapshot)));
}
Здесь всякий раз, когда в Firebase публикуется новое сообщение, обратный вызов в приложении будет синхронизироваться с базой данных Firebase и извлекать последние 20 сообщений.
Я понимаю, как работает push-уведомление, и знаю, что сообщение в приложении не является push-уведомлением.Но я не видел хорошей технической статьи, объясняющей, как в чате приложения синхронизируются сообщения между приложением и базой данных.Я бы подумал, что периодическое извлечение серверной базы данных из приложения будет не самым эффективным способом.
Вот еще код Firebase, связанный с кодом выше:
import firebase from 'firebase'; // 4.8.1
class Fire {
constructor() {
this.init();
this.observeAuth();
}
init = () =>
firebase.initializeApp({
....
});
observeAuth = () =>
firebase.auth().onAuthStateChanged(this.onAuthStateChanged);
onAuthStateChanged = user => {
...
};
get uid() {
...
}
get ref() {
return firebase.database().ref('messages');
}
parse = snapshot => {
...
return message;
};
on = callback =>
this.ref
.limitToLast(20)
.on('child_added', snapshot => callback(this.parse(snapshot)));
}