下载进度事件在使用cordova插件文件传输的ios中无效

时间:2015-10-26 09:34:07

标签: javascript ios cordova phonegap-plugins file-transfer

我正在使用cordova文件传输插件从我的应用程序下载文件。

但是,当我使用进度事件向用户显示下载进度条时每次显示0%时都无法正常工作。

这是我用来显示进度事件的代码....

$cordovaFileTransfer.download(url, targetPath, downloadOptions,
    trustHosts).then(function(result) {
}, function(err) {
}, function(progress) {
    if (progress.lengthComputable) {
        $rootScope.downloadProgress = (progress.loaded / progress.total) * 100;
    } else {
        $rootScope.downloadProgress = (progress.loaded / file_size) * 100;
    }
});

任何人都可以帮我解决ios中的下载进度条问题。

2 个答案:

答案 0 :(得分:2)

六个月前我遇到了同样的问题,它似乎是Filetransfer插件中的一个错误。

我找到的解决方案是执行此处提到的更改: https://issues.apache.org/jira/browse/CB-9936

  

在CDVFileTransfer.m中,在第447到462行之间下载()方法

delegate.connection = [[NSURLConnection alloc] initWithRequest:req delegate:delegate startImmediately:NO];

if (self.queue == nil) {
    self.queue = [[NSOperationQueue alloc] init];
}

[delegate.connection setDelegateQueue:self.queue];

@synchronized (activeTransfers) {
    activeTransfers[delegate.objectId] = delegate;
}

// Downloads can take time
// sending this to a new thread calling the download_async method
dispatch_async(
    dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL),
    ^(void) { [delegate.connection start];}
    );
     

如果我用旧版本的代码替换它,那么它可以工作。

delegate.connection = [NSURLConnection connectionWithRequest:req delegate:delegate];
if (activeTransfers == nil) {
    activeTransfers = [[NSMutableDictionary alloc] init];
}
[activeTransfers setObject:delegate forKey:delegate.objectId];

答案 1 :(得分:0)

function (progress) {
                    $timeout(function () {
                        $scope.downloadProgress = (progress.loaded / progress.total) * 100;
                        console.log($scope.downloadProgress)
                    });
                }
  

使用此功能替换进度功能,您可以在控制台中检查结果