Parse SDK SaveInBackground никогда не перезванивает - PullRequest
0 голосов
/ 04 октября 2019

Итак, у меня есть чаты и сообщения чата в моем приложении

ChatRoomVC я отправляю, если есть непрочитанные сообщения и обновляю чат, чтобы сообщения были прочитаны .. это мой код

 if hasUnreadMessages || getMessagesNow {
        DispatchQueue.background(delay: 0, background: {
            self.thisRoom.readBy!.append(self.currentUser.objectId!)
            self.thisRoom.saveEventually { (saved, err) in
                if err == nil {
                    NSLog("AppDebug -Message Unread updated")
                    DispatchQueue.main.async {
                        NotificationCenter.default.post(name: Notification.Name(rawValue: "updateBadgeValue"), object: nil)
                    }
                } else {
                    print(err!.localizedDescription)
                }
            }
        }, completion: nil)

    }

его никогда не сохраняются на сервере и нет обратного вызова с успехом или ошибкой

, я попытался saveInBackground .. но это просто зависает приложение

, если я удаляю фоновую отправку. приложение также зависает

есть идеи, почему это происходит? TIA

Редактировать: После вызова saveEventually или SaveInBackground использование ЦП увеличивается на 60-80% и никогда не снижается. Так что, если я вернусь и открою другую комнату с непрочитанными сообщениями ... это уйдет на 150-160% ... так что ... на

1 Ответ

0 голосов
/ 30 октября 2019

Я не думаю, что вы должны вызывать saveEventually () в фоновом потоке. Метод saveEventually () уже предназначен для использования фоновых потоков.

попробуйте это ...

if hasUnreadMessages || getMessagesNow {
            self.thisRoom.readBy!.append(self.currentUser.objectId!)
            self.thisRoom.saveEventually()
    }

Вы можете увидеть, как этот метод работает в документации здесь: https://docs.parseplatform.org/ios/guide/#saving-objects-offline

...