2012-01-16 108 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的方法,並將它們顯示在控制檯上。

希望這會有所幫助。

相關問題