Firebase侦听器有时无法在Android设备上运行

时间:2018-09-23 21:10:10

标签: javascript reactjs firebase react-native firebase-realtime-database

我的Firebase监听器可以在iOS(设备和模拟器)和 Android模拟器上完美运行。

连接到真实的android设备时,监听器有时不会触发。

我该如何调试呢?

当Firebase侦听器不起作用时,firebase auth()函数将起作用。因此,我可以对用户进行身份验证,但不能使用 .on监听器来检索数据。

例如,

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')
        });
    }
}

.on侦听器不会触发,但是身份验证有效

这种情况仅在某些情况下才会发生,通常需要等待几个小时,然后再次尝试才能消失。然后它将再次回来。

编辑:在等待一个小时以上并打开应用程序后,firebase监听器实际上开始工作。但是,这花了一个多小时。仍然不知道为什么...

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

编辑:使用移动热点连接到Internet时,不会发生此问题...

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) 

0 个答案:

没有答案