我正在使用此代码通过webView在iPad上播放youtube视频。
NSString *htmlString = [NSString stringWithFormat:@"<html>\
<body>\
<div id=\"player\"> </div>\
<script>\
var tag = document.createElement('script');\
tag.src = \"http://www.youtube.com/player_api\";\
var firstScriptTag = document.getElementsByTagName('script')[0];\
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\
var done = false;\
var player;\
function onYouTubePlayerAPIReady() {\
player = new YT.Player('player', {\
height: '%i',\
width: '%i',\
videoId: '%@',\
events: {\
'onReady': onPlayerReady,\
'onStateChange': onPlayerStateChange\
}\
});\
}\
function onPlayerReady(evt) {\
evt.target.playVideo();\
}\
function onPlayerStateChange(evt) {\
if(evt.data==0)\
{\
window.location=\"http:\\end\";\
}\
}\
function resizePlayer(width,height)\
{\
player.setSize(width, height);\
}\
</script>\
</body>\
</html>",
height,width, videoID];
问题在于,当我通过xCode安装我的应用程序时,它工作正常,但是当我使用ipa文件时,它没有。
答案 0 :(得分:1)
您遇到的问题可能取决于特定设备和iOS版本(UIWebView实施中存在细微差别),而不是使用ipa文件。
因此,您可能会尝试重现UIWebView无法正确解释HTML片段的环境。另外,不要忘记定义webView:didFailLoadWithError:
并查看intercept javascript errors inside of UIWebViews的方法并在控制台上显示它们。
希望这有帮助。
答案 1 :(得分:0)
我找到了导致我问题的原因。
为了让我的应用程序抓住视频到达结束的时刻,我编写了Javascript代码以将页面重定向到另一个URL。然后我从WebViewProtocol实现了方法 - (BOOL)webView:(UIWebView *)shouldStartLoadWithREquest:(NSURLRequest *)navigationType:(UIWebViewNavigationType)navigationType。主要的想法是当它试图去一些特殊链接时关闭视图,但是我犯了一个错误,当我从XCode启动我的应用程序时,由于一些未知的原因没有提出。
错误代码:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *url = [[request URL] absoluteString];
if ([url isEqualToString:@"http://youtube.com/end"])
{
[self onCloseVideo];
[self unsubscribe];
return = NO;
}
//here on else I had to return YES but I didn't
}
代码没有错误:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *url = [[request URL] absoluteString];
BOOL shouldStartRequest = YES;
if ([url isEqualToString:@"http://youtube.com/end"])
{
[self onCloseVideo];
shouldStartRequest = NO;
}
return shouldStartRequest;
}