Блокировка основной темы в Firebase Chat Listener Операция «Сохранить» в Swift - PullRequest
0 голосов
/ 29 февраля 2020

Я использую 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 () в фоновом потоке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...