2015-09-05 130 views
1

是否可以在UIActivityViewController中使用HTML5嵌入视频。我在下面使用的代码在通过电子邮件分享时生成空白的电子邮件正文。嵌入视频HTML5 UIActivityViewController IOS

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和流视频,而不是从本地文件中嵌入视频,那么它可以播放嵌入在电子邮件正文中,而不是显示为文件附件。

任何想法,如果我想要做的是可能的?在那里找不到任何例子...

回答

0

当然,这是可能的,虽然你需要为UIActivityViewController创建一个新的类。很久以前我有same issue,这个link是我解决方案的关键。

我使用了一个新类,并为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]; 

有一个好,感觉自由评论的问题!

干杯

+0

这个例子的伟大工程,唯一的一点是,它并没有说明如何在电子邮件正文使用HTML放视频。如果你可以显示这个html工作在本地视频文件或托管在像这样的服务器上的视频文件,那将是非常好的:http://techslides.com/sample-webm-ogg-and-mp4-video-files- for-html5 – mikemeli

+0

@mikemeli看看这篇文章。它可能会帮助你! http://stackoverflow.com/questions/29926248/html5-video-not-playing-in-native-ios-email-client-2015 – MasterRazer

0

<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

+0

我试过了视频标签,但是合成邮件里写着“你的浏览器不支持视频标签“。有任何想法吗? – mikemeli

+0

使用谷歌Chrome ...得到rekt的孩子 – BuildNC