iOS GData несколько загрузок YouTube - PullRequest
0 голосов
/ 19 ноября 2011

Я делаю приложение, которое должно загрузить несколько видео на 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:)];

1 Ответ

0 голосов
/ 25 ноября 2011

Билет поддерживает setProperty: forKey:, а также setUserData:.

Или просто использовать обратные вызовы блоков вместо делегата и селектора.

...