Firebase 侦听器在 Android 设备上不起作用(有时)

Ast*_*tar 5 javascript firebase reactjs react-native firebase-realtime-database

我的 firebase 侦听在 iOS(设备和模拟器)和Android 模拟器上完美运行。

当连接到真正的 android 设备时,侦听器有时不会触发。

我该如何去调试这个?

当 firebase 侦听器不工作时, firebase auth() 函数正在工作。因此,我可以对用户进行身份验证,但无法使用.on listener检索数据。

例如,

firebase.auth().signInAndRetrieveDataWithEmailAndPassword(email, pass)
.then(() => {
    console.log('this prints every time');
})
.catch(function (error) {
    console.log(error);
});

firebase.auth().onAuthStateChanged((user) => {
    if (user) {
        firebase.database().ref().on('value', (snapshot) => {
            console.log('This never prints')
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

。对听者不火,但认证工作

这只是有时发生,通常等待几个小时,然后再试一次,它就会消失。然后它会再次回来。

编辑:在应用程序打开的情况下等待一个多小时后,firebase 侦听器实际上起作用了。但是,花了一个多小时。还是不明白为什么...

编辑:在 Android Studio 的 logcat 中找到这些日志。这组相同的消息一遍又一遍地重复。

编辑:当使用移动热点连接到互联网时,问题不会发生...

09-23 22:25:47.920 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Trying to fetch auth token
09-23 22:25:47.923 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Successfully fetched token, opening connection
09-23 22:25:47.924 21028-21146/com.starco.starmsg D/Connection: conn_5 - Opening a connection
09-23 22:25:49.163 21028-21372/com.starco.starmsg V/FA: Inactivity, disconnecting from the service
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/WebSocket: ws_5 - timed out on connect
    ws_5 - closed
    ws_5 - closing itself
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/Connection: conn_5 - Realtime connection failed
    conn_5 - closing realtime connection
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Got on disconnect due to OTHER
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Scheduling connection attempt
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/ConnectionRetryHelper: Scheduling retry in 2547ms
09-23 22:26:18.991 21028-21146/com.starco.starmsg D/WebSocket: ws_5 - WebSocket error.
    bfz: error while creating secure socket to wss://star-msg.firebaseio.com/.ws?ns=star-msg&v=5
        at bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):86)
        at bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3)
        at java.lang.Thread.run(Thread.java:761)
     Caused by: java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:586)
        at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:265)
        at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:252)
        at java.net.Socket.<init>(Socket.java:427)
        at java.net.Socket.<init>(Socket.java:210)
        at javax.net.ssl.SSLSocket.<init>(SSLSocket.java:906)
        at com.android.org.conscrypt.OpenSSLSocketImpl.<init>(OpenSSLSocketImpl.java:192)
        at com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:68)
        at bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):70)
        at bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3) 
        at java.lang.Thread.run(Thread.java:761) 
Run Code Online (Sandbox Code Playgroud)