使用Firebase存储下载检测网络中断

时间:2016-06-13 22:42:33

标签: ios firebase firebase-storage

我正在使用Firebase iOS SDK,我正在使用" dataWithMaxSize"将图像下载到内存中。方法。当网络连接良好时,下载很有效,但如果没有网络连接,则下载任务将无限期地继续,而不会调用错误回调。看起来在使用Firebase Android SDK的this SO帖子中发现了同样的问题。如果有人可以就此问题提供一些帮助,我将不胜感激。

由于

3 个答案:

答案 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分钟,操作将成功(并且您将在传输数据时定期收到进度通知)。