Встроить видео HTML5 UIActivityViewController IOS

Можно ли встроить видео с помощью HTML5 в UIActivityViewController. Код, который я использую ниже, создает пустое тело электронной почты при отправке по электронной почте.

NSString * shareMessage = @"<html><head><meta name=\"viewport\" content=\"width=device-width\"></head><body><video controls=\"\" autoplay=\"\" name=\"media\"><source src=\"https://myurl.com/video_test.mp4\" type=\"video/mp4\"></video></body></html>";    

NSArray * activityItems = [NSArray arrayWithObjects:
                           shareMessage,
                           nil];

UIActivityViewController *activityViewController = [[UIActivityViewController alloc]
                                                    initWithActivityItems:activityItems
                                                    applicationActivities:nil];

[self presentViewController:activityViewController animated:YES completion:nil];

Причина, по которой я хотел бы использовать HTML и потоковое видео, а не встраивать видео локально из файла, заключается в том, что оно может воспроизводиться, встроенное в тело электронной почты, а не отображаться как вложение файла.

Любые идеи, возможно ли то, что я пытаюсь сделать? Не могу найти ни одного примера...


person mikemeli    schedule 05.09.2015    source источник


Ответы (2)


Да, конечно, это возможно, хотя вам нужно создать новый класс для UIActivityViewController. У меня была такая же проблема давным-давно, и это < ключом к моему решение.

Я использовал новый класс и определил все различные сообщения для UIActivityViewController.

<сильный>1. Создайте класс UIActivityItemProvider

.h

#import <UIKit/UIKit.h>


@interface CustomActivityClass : UIActivityItemProvider <UIActivityItemSource>
@end

.m

#import "CustomActivityClass.h"

@implementation CustomActivityClass


- (id) activityViewController:(UIActivityViewController *)activityViewController
          itemForActivityType:(NSString *)activityType
{
    if ( [activityType isEqualToString:UIActivityTypePostToTwitter] )
        return @"text";
    if ( [activityType isEqualToString:UIActivityTypePostToFacebook] )
        return @"text";
    if ( [activityType isEqualToString:UIActivityTypeMessage] )
        return @"text";
    if ( [activityType isEqualToString:UIActivityTypeMail] )
        return @"<html><body> \n"
        "<h1 style=\"font:15px Helvetica,Arial,sans-serif\"> \n"
        "text \n"
        "<b> \n"
        "bold text \n"
        "</b> \n"
        "</h1> \n"
        "<p style=\"font:13px Helvetica,Arial,sans-serif\"> \n"
        "some text\n"
        "</p> \n"
        "</body></html>";

    NSLog(@"%s",__FUNCTION__);
    NSLog(@"%@", activityType);
    return [super activityViewController:activityViewController itemForActivityType:activityType];

    return nil;
}
- (id) activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { return @""; }



@end

Это буквально все, что вам нужно. Просто замените мой html-пример своим html-видео, и, вероятно, все должно работать нормально.

Вот дополнительный код для инициализации контроллера с помощью вашей кнопки/действия:

CustomActivityClass *ActivityProvider = [[CustomActivityClass alloc] init];

        NSArray *items = [NSArray arrayWithObjects: ActivityProvider,nil];


        UIActivityViewController *ActivityView =
        [[UIActivityViewController alloc] initWithActivityItems:items
                                          applicationActivities:nil];

Удачи и не стесняйтесь комментировать вопросы!

Ваше здоровье

person MasterRazer    schedule 05.09.2015
comment
Этот пример отлично работает, единственное, что он не показывает, как поместить видео с помощью html в тело письма. Было бы здорово, если бы вы могли показать, как этот html работает с локальным видеофайлом или видеофайлом, размещенным на сервере, подобном этому: techslides.com/sample-webm-ogg-and-mp4-video-files-for-html5 - person mikemeli; 09.09.2015
comment
@mikemeli посмотрите этот пост. Это может помочь вам! stackoverflow.com/questions/29926248/ - person MasterRazer; 09.09.2015

Что ж, <embed src="..."> вставит ваше видео, и ваш HTML станет менее загроможденным, а

<video width="320" height="240" controls> <source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> Your browser does not support the video tag. </video>

тег — ваш лучший выбор, так как вы просто размещаете свое видео. Теперь, конечно, когда вы связываете его с вашим файлом.

http://www.w3schools.com/tags/tag_video.asp

person BuildNC    schedule 05.09.2015
comment
Я попробовал тег видео, но в составленном электронном письме говорится, что ваш браузер не поддерживает тег видео. Есть идеи? - person mikemeli; 09.09.2015