Я использую базу данных Firebase в реальном времени в моем Приложение C ++ (cocos2dx). Попытка добавить valueListner, который работает нормально и получение ответа, если есть какие-либо изменения в указанной позиции узла, но получение ответа даже после удаления ValueListner в этой позиции узла.
Сценарий таков:
Теперь мне нужно удалить слушателя, так как я должен перейти с экрана 1 на экран 2, независимо от состояния ответа от UpdateChildren.
Я использую приведенный ниже код snnipet:
// create database reference
firebase::App * app = firebase::App::GetInstance();
DatabaseReference ref = Database::GetInstance(app)->GetReference();
// create reference
DatabaseReference refUpdate = ref.Child(“path”);
// create Value Event Listener
ExpectValueListener * listener = new ExpectValueListener();
refUpdate.AddValueListener(listener);
// create map for update
std::map<std::string, firebase::Variant> update_values;
update_values.insert(std::make_pair("Apple", 100));
update_values.insert(std::make_pair(“Type”, "is a fruit!"));
refUpdate.UpdateChildren(update_values);
Чтобы проверить, работает ли RemoveValueListener () или нет, я вызвал RemoveValueListener () сразу после UpdateChildren (), а также удалил прослушиватель из памяти. Затем он просто рухнул в iOS Firebase SDK.
Ниже код сннипета используется для удаления:
//remove value listener just after UpdateChildren
refUpdate.RemoveValueListener(listener);
// delete listener from memory
delete listener;
listener = nullptr;
Я также приложил скриншот аварии Скриншот.
На скриншоте путь ссылки на базу данных виден в _куски блок.
Задача ещё не решена.
Других решений пока нет …