我正在使用Firebase iOS SDK,我正在使用" dataWithMaxSize"将图像下载到内存中。方法。当网络连接良好时,下载很有效,但如果没有网络连接,则下载任务将无限期地继续,而不会调用错误回调。看起来在使用Firebase Android SDK的this SO帖子中发现了同样的问题。如果有人可以就此问题提供一些帮助,我将不胜感激。
由于
答案 0 :(得分:2)
我做了很多测试,设置maxUploadRetryTime
各种TimeInterval
(30,20,10,5,5,2,1),我可以确认只设置maxUploadRetryTime = 1.0
触发超时故障块。
一些日志:
2017-05-03 21:15:17.922 [Info] [main] [UploadRequest.swift:40] upload(uploadData:) > Start uploading with Timeout: 1.0
2017-05-03 21:15:18.170 [Verbose] [main] [UploadRequest.swift:60] upload(uploadData:) > Upload failed
这是一种非常意外的行为,我不确定他们是否意识到这一点。目前我正在使用Firebase/Database (3.17.0)
更新:
我向firebase团队提交了一个错误,他们已经确认了这个问题。报告编号:8-2338000016926
答案 1 :(得分:0)
您可以在尝试下载/上传任何图片等之前检查网络可用性
在android中
private boolean isNetworkAvailable() {
getActivity().runOnUiThread(new Runnable() {
public void run() {
// Update UI here when network is available.
ConnectivityManager connectivityManager
= (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (!(activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting())) {
Snackbar snackbar = Snackbar
.make(coordinatorLayout, "No internet connection!", Snackbar.LENGTH_INDEFINITE)
.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
isNetworkAvailable();
}
});
View sbView = snackbar.getView();
snackbar.setActionTextColor(Color.WHITE);
sbView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.snackbar_back_color2));
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
//textView.setTextColor(Color.YELLOW);
snackbar.show();
}
}
});
return (activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting());
}
答案 2 :(得分:0)
maxUploadRetryTime / maxDownloadRetryTime / maxOperationRetryTime是FIRStorage上的所有属性,你可以设置那些操作失败的方式与其他帖子中关于android的描述相同。
这些超时的工作方式是它们基于重试的次数。因此,如果设置为“4秒”且连接停止5秒,则操作将失败。如果操作在没有网络中断的情况下持续5分钟,操作将成功(并且您将在传输数据时定期收到进度通知)。