2016-05-27 16 views
8

Firebaseデータベースを使用するように変換しようとしている既存のアプリケーションがあります。ここで私は、オブジェクトを保存しようとすると、私は使用していますいくつかのコードです:Android Appから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によって生成されたIDの値とともに、この時点(で:

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コンソールには何も表示されていない、私はアプリを再起動したときにも、onChildAddedコールバックがありません。 くびになる。

私はまた、上記のコードを含む別のアプリを作成しました。これはうまくいきます。だから、私の既存のアプリケーションでやっていることが火災基地に影響を与えているのかどうか分からないのですか?しかし、私は自分のすべての依存関係を取って単純なプロジェクトにも入れているので、それが何であるかはわかりません。

私が次に確認できるものはありますか?

更新:私は、推奨されているようにonComplete Listenerを追加しました。それは決して呼ばれることはありません。私はのsetValue()の後にFirebaseDatabase.purgeOutstandingWritesを()を追加した場合、その後、onCompleteのは、次のエラーで呼び出されます:

DatabaseError: The write was canceled by the user. 
+0

最初に行うことは、完了ハンドラを 'setValue()'に追加してエラーで終了するかどうかを確認することです。これにより、データベースが報告する潜在的な問題(ログカットなど)をログに記録することができます。 https://firebase.google.com/docs/database/android/save-data#receive_a_completion_callback –

+0

私の前のコメント(これは今削除されています)の修正を参照してください。 onCompleteはまったく呼び出されませんでした。主な質問のUPDATEを参照してください。 – Innova

+0

この最後のビットは、データベースに接続していないように聞こえます。アプリでディスクの永続性が有効になっていますか?もしそうなら、あなたはそれを無効にするときに物事が変わるかどうかを見ることができますか? –

答えて

3

は、まあ、私はちょうどそれを考え出しました。私の2つのプロジェクトの間に違いがあったと考えると、赤ちゃんがいました。実際の違いは、私が2つのプロジェクトを展開していた2つのデバイス間の違いでした。作業デバイスは、セルラー接続されていました。動作していなかったデバイスは、プロキシの背後にある企業Wi-Fiネットワーク上にありました。

私はプロキシをデバイスに正しく設定していますが、外部サイトにアクセスできますが、firebaseはプロキシ設定を使用していないようですsource

Firebaseがデバイスプロキシ設定を使用するといいでしょう。

関連する問題