2017-08-05 55 views
1

我目前正在使用Android Studio 3(Canary)在Kotlin中構建原生Android應用程序。我也在使用Firebase實時數據庫和Firebase身份驗證。這裏是我的鋤頭依賴:從未在Android上完成Firebase請求

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 

    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support:design:25.3.1' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'com.google.firebase:firebase-database:11.0.4' 
    compile 'com.google.firebase:firebase-auth:11.0.4' 
    compile 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.2' 
    compile 'com.android.support:support-v4:25.3.1' 
    compile 'com.android.support:recyclerview-v7:25.3.1' 
    compile 'com.firebaseui:firebase-ui-database:2.0.1' 
    testCompile 'junit:junit:4.12' 
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" 
} 

一切正常,直到與我的Firebase數據庫的溝通停止完成。我沒有收到任何錯誤,但我註冊的所有聽衆都不再被觸發。例如:

val ref = FirebaseDatabase.getInstance().reference.child("message") 
    ref.setValue("Test", object: DatabaseReference.CompletionListener { 
     override fun onComplete(p0: DatabaseError?, p1: DatabaseReference?) { 
      println("IT WORKED!") 
     } 
    }) 

println聲明從未達到過。

這是一些記錄器的輸出,我相信。它看起來像所有WebSocket連接嘗試超時,因此重試。此輸出重複一遍又一遍:

08-05 15:11:25.899 10820-10909/... D/Connection: conn_12 - Opening a connection 
08-05 15:11:55.899 10820-10909/... D/WebSocket: ws_12 - timed out on connect 
08-05 15:11:55.899 10820-10909/... D/WebSocket: ws_12 - closed 
08-05 15:11:55.899 10820-10909/... D/WebSocket: ws_12 - closing itself 
08-05 15:11:55.899 10820-10909/... D/Connection: conn_12 - Realtime connection failed 
08-05 15:11:55.899 10820-10909/... D/Connection: conn_12 - closing realtime connection 
08-05 15:11:55.899 10820-10909/... D/PersistentConnection: pc_0 - Got on disconnect due to OTHER 
08-05 15:11:55.899 10820-10909/... D/PersistentConnection: pc_0 - Scheduling connection attempt 
08-05 15:11:55.899 10820-10909/... D/ConnectionRetryHelper: Scheduling retry in 9844ms 
08-05 15:12:05.739 10820-10909/... D/PersistentConnection: pc_0 - Trying to fetch auth token 
08-05 15:12:05.739 10820-10909/... D/PersistentConnection: pc_0 - Successfully fetched token, opening 
connection 
08-05 15:12:05.739 10820-10909/... D/Connection: conn_13 - Opening a connection 

但是,如果我是正確的,是什麼原因導致這個問題?我還沒有發現任何類似的問題谷歌搜索。

我在物理設備和仿真器上運行代碼。我有一個Web客戶端連接到同一個數據庫,但仍然在工作,所以我想這不是服務器端問題。

最糟糕的是,我重置我的項目到一個點,它曾經工作,但沒有幫助。

我知道這不是太多的信息,但我不知道如何進一步分析問題。

回答

1

這是一個已知問題。 Firebase客戶端嘗試使用多種方法建立與Firebase服務器的實時連接。如果其中一種方法在WebSocket之前成功,我們會取消WebSocket並發現該警告。您可以放心地忽略錯誤。

+1

呃...這個日誌輸出表明它正在嘗試#13。我不相信這是正常握手/談判的一部分。客戶端似乎更有可能無法訪問服務器。 –