Я использую Firebase Chat в Swift 5.0. Когда я получаю все сообщения из локальной базы данных, тогда, если количество сообщений больше, чем тогда, обратные вызовы прослушивателя сообщений firebase блокируют Главный поток на некоторое время из-за операции сохранения.
Я уже пытался добавить фоновый поток в код, но, похоже, он не работает. Ниже приведены некоторые фрагменты кода.
DispatchQueue.global(qos: .background).async {
self.setChatMessageListener()
}
// this call is already done on background thread
func setChatMessageListener () {
removeChatMessageListener()
FirebaseUtils.instance.getChatMessages(chatMasterId: chatMasterId).observe(.childAdded) {
(snapshot) in
// I want this call to be done on background thread how can i do that?
// this get called for each message so main thread is blocking here
self.updateChatMessage(snapshot: snapshot)
}
}
func updateChatMessage (snapshot: DataSnapshot) {
if let chatMessage = getChatMessage(snapshot: snapshot) {
DatabaseManager.getInstance().getDatabaseWriteManager().saveData(realmObject: chatMessage) {
(success) in
self.loadMessages(chatMessageId: chatMessage.chatMessageId)
}
}
else {
self.loadMessages()
}
}
Как я могу сделать операцию self.updateChatMessage () в фоновом потоке?