iOS App:用原生播放器替换 webview 中的 Flash
Posted
技术标签:
【中文标题】iOS App:用原生播放器替换 webview 中的 Flash【英文标题】:iOS App: Replace Flash in webview with native player 【发布时间】:2014-01-21 03:40:40 【问题描述】:我即将开发我的第一个 ios 应用。对于第一个版本,主要目标是让应用程序成为我网站的 web 视图。到目前为止,这很容易,只需将 webview 指向正确的 url。我需要帮助的部分是用原生视频播放器替换 web 视图中的 Flash 视频播放器。
基本上在网站上,我有一个 Flash 视频播放器,它通过 RTMP 连接到流式视频服务器。截至目前,该网站需要使用 Flash 视频(因此不能转换为 html5 视频)。 iOS 应用应按原样显示网站,除了找到 Flash 播放器并将其替换为原生视频播放器,以便视频播放仍然可以在 iPhone/iPad 上播放。
有没有人对此有任何建议?
【问题讨论】:
【参考方案1】:这是可以做到的。它可能不干净和漂亮,但这是一种可能的方法:您需要在显示 HTML 之前对其进行解析。
首先,您需要拦截 UIWebView 的加载请求调用,以便检查它是否正在调用包含您需要解析的 Flash 的页面的 URL。要拦截加载请求调用,请使用 UIWebViewDelegate 方法webView:shouldStartLoadWithRequest:navigationType:
读取 URL。
如果 URL 与您需要从中删除 Flash 的 URL 匹配,您将运行加载 HTML 字符串的代码,您将解析到 Web 视图中(稍后会详细介绍)并返回 NO
到webView:shouldStartLoadWithRequest:navigationType:
委托方法。这意味着当用户尝试访问包含 Flash 的页面时,我们将阻止 UIWebView 执行其操作并使用我们自己的解析内容加载视图。
一旦确定需要解析 HTML,就需要进入一个可以使用的变量。以字符串形式获取页面的 HTML:
NSURL *yourURL = [NSURL URLWithString:@"http://google.com"];
NSError *error;
NSString *htmlString = [NSString stringWithContentsOfURL:yourURL encoding:NSUTF8Encoding error:&error];
获得字符串后,要从 HTML 中删除 Flash 代码,请参阅以下问题:
Comment out a string in HTML before UIWebView can display it
解析 HTML 并删除 Flash 后,您可以使用 [webView loadHTMLString:string baseURL:nil];
将其加载到 Web 视图中
最后,您需要通过代码在 Web 视图顶部插入一个原生电影播放器。您将不得不处理屏幕旋转以及本机播放器在 Web 视图顶部的大小和位置,但我会将这些乐趣留给您。
这是很多原材料,但应该能让你继续寻找可能的解决方案。
【讨论】:
【参考方案2】:所以,您的要求是在本机应用程序中显示一个 WebView,并在此 WebView 中显示一些本机组件。这是做不到的。
您必须为此构建一个完全原生的应用程序。或者在 WebView 中使用 HTML5。
【讨论】:
以上是关于iOS App:用原生播放器替换 webview 中的 Flash的主要内容,如果未能解决你的问题,请参考以下文章