Bre*_*des 4 firebase flutter google-cloud-firestore
我正在开发一个使用Firebase的Firestore将数据发送到Web的应用程序。该应用程序的功能之一是能够在脱机时将数据保存在设备中,并在恢复互联网连接后将其发送到Firestore。我激活了离线持久性,但无法正常工作。
调试控制台:
W/OkHttpClientTransport(28536): Failed closing connection
W/OkHttpClientTransport(28536): javax.net.ssl.SSLException: Write error: ssl=0x7f7acfc408: I/O error during system call, Broken pipe
W/OkHttpClientTransport(28536): at com.google.android.gms.org.conscrypt.NativeCrypto.SSL_write(Native Method)
W/OkHttpClientTransport(28536): at com.google.android.gms.org.conscrypt.NativeSsl.write(:com.google.android.gms@14798020@14.7.98 (040406-222931072):4)
Run Code Online (Sandbox Code Playgroud)
恢复互联网后,如何激活离线持久性并与Firestore同步?
我的密码:
Future<Null> sendFirebaseData(var selectedModel) async {
Firestore.instance.enablePersistence(true);
var certID = await getIDCertificado();
var dateTime = new DateTime.now();
var nowHour = new DateFormat('kk:mm:ss').format(dateTime);
Map<String, dynamic> dataHeader = {
'ID': certID,
};
Map<String, dynamic> finalDataMap = {}..addAll(dataGeneral)
..addAll(dataInstrumento)..addAll(dataPadrao)
..addAll(dataAdicional)..addAll(dataHeader);
await Firestore.instance.collection('certificados').document((certID.toString()))
.setData(finalDataMap);}
Run Code Online (Sandbox Code Playgroud)
die*_*per 11
当您在Firestore中使用离线持久性时,请勿使用“交易”或await进行响应。
因此,更改此:
await Firestore.instance.collection('certificados').document((certID.toString()))
.setData(finalDataMap);
Run Code Online (Sandbox Code Playgroud)
对此:
Firestore.instance.collection('certificados').document((certID.toString()))
.setData(finalDataMap);
Run Code Online (Sandbox Code Playgroud)
恢复互联网连接后,即使您处于后台,数据也将自动同步。
当您的应用关闭时不起作用。
我认为当前的答案已经过时了。根据firebase文档,Android和iOS默认启用离线持久性。对于网络来说,情况并非如此。
在flutter中,firestore的实现是基于底层操作系统的。因此,您在移动应用程序上是安全的,但在网络上使用 flutter 就不安全了。
| 归档时间: |
|
| 查看次数: |
2610 次 |
| 最近记录: |