Данные не сохраняются в Firebase из приложения Android
у меня есть существующее приложение, которое я пытаюсь преобразовать в базу данных Firebase. Вот код, который я использую при попытке сохранить объект:
...
private FirebaseDatabase database;
private DatabaseReference waypointRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    database = FirebaseDatabase.getInstance();
    waypointRef = database.getReference(Utils.WAYPOINT_REFERENCE);
    waypointRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
            FBWaypoint wp = dataSnapshot.getValue(FBWaypoint.class);
            wp.setId(dataSnapshot.getKey());
            Log.e(TAG, String.format("Child Added:  %s, %s, %s, Prev: %s", wp.getName(), wp.getLatitude(), wp.getLongitude(), previousChildName));
        }
        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
            FBWaypoint wp = dataSnapshot.getValue(FBWaypoint.class);
            Log.e(TAG, String.format("Child Changed:  %s, %s, %s, Prev: %s", wp.getName(), wp.getLatitude(), wp.getLongitude(), previousChildName));
        }
        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
            FBWaypoint wp = dataSnapshot.getValue(FBWaypoint.class);
            wp.setId(dataSnapshot.getKey());
            Log.e(TAG, String.format("Child Removed:  %s, %s, %s, Prev: %s", wp.getName(), wp.getLatitude(), wp.getLongitude()));
        }
        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
            FBWaypoint wp = dataSnapshot.getValue(FBWaypoint.class);
            Log.e(TAG, String.format("Child Moved:  %s, %s, %s, Prev: %s", wp.getName(), wp.getLatitude(), wp.getLongitude(), previousChildName));
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e(TAG, "Failed to add Child Listener.", databaseError.toException());
        }
    });
    ...
}
после создания объекта я сохраняю его следующим образом:
waypointRef.push().setValue(wp);
Я вижу, что обратные вызовы срабатывают в моих журналах в этот момент (вместе со значениями для идентификаторов, генерируемых firebase:
Child Added:  Hrbrbe, 44.969846, -89.670527, Prev: null
Child Added:  Hdbece, 44.956019, -89.666436, Prev: -KInIzqk6m96lwVWF6Pc
Child Added:  Hebdbr R, 44.970372, -89.673188, Prev: -KInJ17sfsQ4v_fUrAW3
однако я ничего не вижу в консоли firebase для этих записей. Также, когда я перезапускаю app, onchildadded обратный вызов не увольняется.
Я также создал другое приложение, которое просто содержит код выше...и это прекрасно работает. Поэтому я не уверен, что что-то, что я делаю в своем существующем приложении, влияет на firebase? Однако я не уверен, что это может быть, поскольку я также взял все мои зависимости и поместил их в простой проект.
любые идеи о том, что я могу проверить дальше?
UPDATE: я добавил прослушиватель onComplete как рекомендуемый. Его никогда не называют. Если я добавлю FirebaseDatabase.purgeOutstandingWrites () после setValue (), затем onComplete вызывается со следующей ошибкой:
DatabaseError: The write was canceled by the user.
            2 ответов
Ну, я только что понял. Мысль о том, что между моими двумя проектами есть разница, была отвлекающим маневром. Фактическая разница была между двумя устройствами, на которые я развертывал два проекта. Рабочее устройство было подключено к сотовой связи. Устройство, которое не работало, было в нашей корпоративной сети wifi за прокси-сервером.
У меня есть прокси-сервер настроен правильно на устройстве, и я могу получить доступ к внешним сайтам...однако, похоже, firebase не использует настройки прокси источник.
было бы здорово, если Firebase будет использовать настройки прокси-сервера устройства!
важно иметь в виду, если вы сохраняете настроенный класс, вам нужно установить геттеры и сеттеры для объектов, которые вы хотите сохранить в firebase. Если вы этого не сделаете, объекты, которые не дали геттеров и сеттеров, не будут сохранены.