2012-01-16 60 views
0

我正在使用此代码通过webView在iPad上播放youtube视频。使用ipa文件安装时,应用程序无法正常工作

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

什么是您的应用程序有问题?你有没有工作的设备崩溃或控制台日志? – sergio 2012-01-16 10:00:46

+0

它似乎不想将html加载到webview中,因为我可以看到一个空的视图。 – 2012-01-16 10:04:01

回答

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; 
} 
1

您遇到的问题可能取决于具体的设备和iOS版本(UIWebView实现中存在细微差异),而不仅仅是使用ipa文件。

因此,您可能会尝试重现UIWebView无法正确解析HTML片段的环境。此外,不要忘记定义webView:didFailLoadWithError:并查看intercept javascript errors inside of UIWebViews的方法,并将它们显示在控制台上。

希望这会有所帮助。

相关问题