我想在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