Firestore支持离线持久化却报ManagedChannelImpl警告,如何消除?
为什么Firestore开了离线持久化,还会弹出
ManagedChannelImpl警告?怎么解决? 先搞懂为啥会出这个警告
Firestore的离线持久化确实能让你断网时照样读写本地缓存,网好自动同步——这部分功能完全正常。但你看到的那个警告,其实是Firestore底层用的gRPC通信库搞出来的:
- 哪怕开了离线模式,Firestore后台还是会时不时尝试连云端(比如看看有没有新数据要同步,或者确认下网络状态)
- 断网的时候,gRPC解析Firebase的服务器域名失败,就会蹦出这个警告
- 说白了这就是底层的日志噪音,半毛钱不影响你的业务功能
两种办法搞定这个警告
办法1:调低gRPC的日志输出级别
你可以通过配置日志规则,把这类警告给屏蔽掉。如果是Android项目:
- 在
app/src/main/resources目录下新建个logging.properties文件(没这个目录就自己建一个) - 把下面内容贴进去,把gRPC的日志级别设成只输出严重错误:
io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler.level = SEVERE io.grpc.ManagedChannelImpl.level = SEVERE
要是你的Firebase版本对应的gRPC包名不一样,就看警告日志里的完整类名,把那个类的日志级别改成SEVERE就行。
办法2:直接忽略(嫌麻烦的话推荐这个)
这个警告真的只是底层在“吐槽”连不上网,完全不影响Firestore的离线/在线功能。如果你的应用跑起来一切正常,其实没必要管它,当成背景噪音无视就好。
最后补一句
你的代码db.collection("users").document("doc").set(user)写得没问题,断网时会乖乖存本地,网一好就自动同步到云端。这个警告和你的业务逻辑根本不沾边,就是gRPC在瞎嚷嚷而已~
内容的提问来源于stack exchange,提问作者Marat
相关产品推荐
相关产品推荐

