Я делаю приложение, которое должно загрузить несколько видео на YouTube. Проблема с GData заключается в том, что я не знаю, как передать информацию в функцию обратного вызова, чтобы я мог различать различные загрузки.
(void)uploadTicket:(GDataServiceTicket *)ticket
finishedWithEntry:(GDataEntryYouTubeVideo *)videoEntry
error:(NSError *)error
В ASIHttpRequest есть свойство «userInfo», позволяющее пользователю передавать информацию в обратный вызов requestFinish. Как насчет GData запросов на загрузку YouTube?
- (void)uploadToYoutube: (NSString *)login andPassword:(NSString *)password withVideo:(NSData *)videoData forSighting:(SightingDB *)sighting {
[service setYouTubeDeveloperKey:DEVELOPER_KEY];
NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:kGDataServiceDefaultUser];
NSString *titleStr = @"title";
// gather all the metadata needed for the mediaGroup
GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:titleStr];
[titleStr release];
NSString *categoryStr = @"Entertainment";
GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:categoryStr];
[category setScheme:kGDataSchemeYouTubeCategory];
NSString *descStr = @"descripion"
GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:descStr];
[descStr release];
NSArray *kwords = [[NSArray alloc] initWithObjects:@"xxx",@"weee",nil];
GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithStrings:kwords];
BOOL isPrivate = NO;
GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];
[mediaGroup setMediaTitle:title];
[mediaGroup setMediaDescription:desc];
[mediaGroup addMediaCategory:category];
[mediaGroup setMediaKeywords:keywords];
[mediaGroup setIsPrivate:isPrivate];
NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:@""
defaultMIMEType:@"video/mp4"];
// create the upload entry with the mediaGroup and the file data
GDataEntryYouTubeUpload *entry;
entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup
data:videoData
MIMEType:mimeType
slug:@"movie.mov"];
SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
[service setServiceUploadProgressSelector:progressSel];
GDataServiceTicket *ticket;
ticket = [service fetchEntryByInsertingEntry:entry
forFeedURL:url
delegate:self
didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)];