我想在ASIHttprequest库上显示下载进度条(HUD进度条)。 我试过这[request setDownloadProgressDelegate:loadingHUD]; [request setShowAccurateProgress:YES]; [request setDelegate:self];
但没有运气,它显示空白在开始downlaod和结束直接显示完整进度。 所以我记录进度值,并得到set progress0.000000 set progress1.000000
。set-progress仅给asi-http-request中的0和1值自定义进度跟踪
我怎样才能获得准确的进度更新到我的HUD进度条。
我JSON发送数据到我的服务器和服务器验证和,如果它的验证还好不是在response..i发回我的视频数据要存储响应转换成视频文件,所以我用这个
这里是我的代码
loadingHUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
loadingHUD.labelText = NSLocalizedString(@"Downloading", nil);
loadingHUD.mode=MBProgressHUDModeAnnularDeterminate;
[loadingHUD showWhileExecuting:@selector(verifyReceipt:) onTarget:self withObject:transaction animated:YES];
// call the verify receipt method and download the file
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
- (void)verifyReceipt:(SKPaymentTransaction *)transaction {
// string to NSdictionary and dictioanry to json string
NSArray *mainObjects = [NSArray arrayWithObjects:vendorId,deviceData,productID,nil]; // purchased Item ID of previous item
NSArray *mainKeys = [NSArray arrayWithObjects:@"ID",@"device",@"video",nil];
NSDictionary *mainDictionary = [NSDictionary dictionaryWithObjects:mainObjects forKeys:mainKeys]; // final string of data
NSLog(@"Json Main dict created");
NSString *[email protected]"1";
NSArray *testobj = [NSArray arrayWithObjects:mainDictionary,receiptDataEncoded,sandBox,nil]; // purchased Item ID of previous item
NSArray *testkey = [NSArray arrayWithObjects:@"data",@"receiptData",@"sandbox",nil];
NSDictionary *testdict = [NSDictionary dictionaryWithObjects:testobj forKeys:testkey]; // final string of data
NSLog(@"Json Main dict created");
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:testdict options:NSJSONWritingPrettyPrinted error:&error];
NSString *resultAsString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"Purchase product Json string:\n%@", resultAsString);
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[[NSURL alloc] initWithString:@"http://testing.test.io/dev.php/video/verifyReceipt"]];
//[request setDidReceiveDataSelector:@selector(request:didReceiveBytes:)];
[request setPostValue:resultAsString forKey:@"verify"];
[request setDidFinishSelector:@selector(requestDone:)];
[request setTimeOutSeconds:120];
[request setNumberOfTimesToRetryOnTimeout:2];
// request.showAccurateProgress=YES;
[request setDownloadProgressDelegate:loadingHUD];
[request setShowAccurateProgress:YES];
request setDelegate:self];
//[request setDownloadProgressDelegate:self];
// SAVED video PATH
// Get the Document directory
NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
// Add your filename to the directory to create your saved pdf location
NSString *movLocation = [documentDirectory stringByAppendingPathComponent:[fileName st ringByAppendingString:@".mov"]];
// TEMPORARY video PATH
// Get the Caches directory
NSString *cachesDirectory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
// Add your filename to the directory to create your temp pdf location
NSString *tempMovLocation = [cachesDirectory stringByAppendingPathComponent:[fileName stringByAppendingString:@".mov"]];
// Tell ASIHTTPRequest where to save things:
[request setTemporaryFileDownloadPath:tempMovLocation];
[request setDownloadDestinationPath:movLocation];
[request startSynchronous];
NSLog(@"Path is %@",movLocation);
}
- (void)setProgress:(float)progress1
{
[loadingHUD setProgress:progress1];
NSLog(@"set progress%f",progress1);
}
- (void)requestDone:(ASIHTTPRequest *)request{
//[MBProgressHUD hideHUDForView:self.view animated:YES];
if(request.responseStatusCode==200)
{
//BOOL success = [videoData writeToFile:movLocation atomically:NO];
// NSLog(@"bool value is%d",success);
NSLog(@"in request done sucsessfully downlaod and store in database %d",request.responseStatusCode);
[DBHelper savePurchaseId:fileName];
[self movieReceived];
}
else{
NSLog(@"in request downlaod and store in database failed %@",request.responseHeaders);
}
}
-(void)requestFailed:(ASIHTTPRequest *)request
{
NSLog(@"%@",request.error);
}
,如果我用didreceivebytes比我的文件不会得到下载..
-(void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes {
NSLog(@"Received bytes:%lld",bytes); progress = 0.0f; if (progress < 1.0f)
{
progress = ((float)bytes)/469690;
NSLog(@"progress value is %f",progress);
loadingHUD.progress = progress;
}
}
任何帮助表示赞赏谢谢
你以前张贴类似的问题,我已经回答了这个问题。你尝试过吗? – Adithya
@Adithya我的问题没有解决这就是为什么 –
你有没有得到我提供的解决方案? – Adithya