2015-09-16 1 views
3

Я использую родной листок для iOS, и он работает на все: Mail, Photos, Facebook. Все, кроме YouTube. Я попробовал .mov и .mp4 расширения и файлы разного размера.Поделиться видео с помощью UIActivityViewController - работает для Facebook, но не для YouTube

Обновление.
На обложке с видео также не отображается опция Twitter. Это справедливо и для фотографий или для камеры. Однако на личном листе фотографий отображается значок YouTube, это говорит мне, что я делаю что-то неправильно.

Image displays iOS app with white share sheet. There's many icons: Mail, Facebook, save video, but not Twitter or YouTube
Этот бар статус был отредактирован in the Altershot.

NSData *urlData = [NSData dataWithContentsOfURL:urlToDownload]; 
if (urlData) { 
    // File downloaded 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"file.mov"]; 
    [urlData writeToFile:filePath atomically:YES]; 
    // File saved 

    NSURL *videoLink = [NSURL fileURLWithPath:filePath]; 
    NSArray *activityItems = @[videoLink]; 
    UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
    [activityViewController setValue:@"Video" forKey:@"subject"]; 

    if (IS_IPAD) { 
     self.popover = [[UIPopoverController alloc] 
         initWithContentViewController:activityViewController]; 
     [self.popover presentPopoverFromRect:self.shareButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES]; 
    } else { 
     [self presentViewController:activityViewController animated:YES completion:nil]; 
    } 
} 
+0

Вы знаете, что совместное использование на YouTube не работает, не так ли? – Jasper

+0

@ Jasper спасибо, я этого не знал. Почему он работает с фотографиями, и как заставить его работать с собственными инструментами? –

+0

Вы имеете в виду случайную фотографию, просматриваемую в Photos.app, нажав кнопку совместного доступа, показывает вам вариант YouTube, на который вы хотите поделиться? У меня нет этой опции (но у меня установлен YouTube.app) – Jasper

ответ

2

Насколько я знаю, разделив на YouTube не работает вне коробки.

Если вы хотите добавить опцию YouTube к вашему UIActivityViewController, вам необходимо будет создать пользовательский код UIActivity.

Простая реализация:

// YouTubeActivity.h 
#import <UIKit/UIKit.h> 

@interface YouTubeActivity : UIActivity 

@end 


// YouTubeActivity.m 

#import "YouTubeActivity.h" 
//You might need to import some YouTube framework too 

@interface YouTubeActivity() 

@end 

@implementation YouTubeActivity 

- (NSString *)activityType 
{ 
    return @"YouTube"; 
} 

- (NSString *)activityTitle 
{ 
    return @"YouTube"; 
} 

- (UIImage *)_activityImage 
{ 
    return [UIImage imageNamed:@"some_youtube_image"]; 
} 

- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems 
{ 
    return YES; 
} 

- (void)prepareWithActivityItems:(NSArray *)activityItems 
{ 

} 

- (UIViewController *)activityViewController 
{ 
    return nil; 
} 

- (void)performActivity 
{ 
    // This is where you can do anything you want, and is the whole reason for creating a custom 
    // UIActivity 

} 

@end 

Вы должны добавить инициализируется YouTubeActivity объект в вашем activityItems При создании UIActivityViewController

Проверить на YouTube API Documentation для фактической реализации функции акций.

Смежные вопросы