0

ストーリーボード オブジェクトとこのコードを使用して、Objective-C で UIWebView を作成しました。

[videoView setDelegate:self];
NSString *preURL = @"http://example.com/videoscript.php";
NSString *fullURL = [preURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[videoView loadRequest:requestObj];

WebView は、このコンテンツへのリンクを開きます

<head>
<script src="http://www.youtube.com/player_api?enablejsapi=1&version=3"></script>

        <script language="javascript">
    //Load player api asynchronously.
    //var tag = document.createElement('script');
    //tag.src = "https://www.youtube.com/iframe_api";
  //  var firstScriptTag = document.getElementsByTagName('script')[0];
    //firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    //var done = false;
    //var player;
    function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '100%',
          width: '100%',
          videoId: 'JW5meKfy3fY',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          },
          playerVars: {
              'controls': '0',
              'showinfo': '0',
              'showsearch': '0',
              'loop': '1',
              'embedjsapi': '1',
              'qutoplay': '1'
          }
        });
    }
    function onPlayerReady(evt) {
        evt.target.playVideo();
    }
    function onPlayerStateChange(evt) {

    }
    function stopVideo() {
        player.stopVideo();
    }

        </script>
</head>

ややこしいのは、スクリプトはデスクトップ ブラウザでは問題なく機能しますが、iOS の Safari と UIWebView では機能しないことです。これはAdobe Flash Playerの問題の欠如だと思いますが、javascriptを使用してiFrameを作成することは、実際のタグを使用することと同じだと思いましたか? タグを使用する場合、これは機能しますが、その方法はオプションではありません。私の質問は、iFrames を直接ではなく、Javascript を使用して HTML5 YouTube プレーヤーを埋め込む方法はありますか?

4

1 に答える 1

0

私が理解しているように、あなたが使用しているAPIは Flash Player を必要とするため、iOS では動作しません。「要件」の下に次のように記載されています。

すべてを正しく表示するには、エンド ユーザーが Flash Player 10.1 以降をインストールしている必要があります。この要件のため、SWFObject を使用して SWF を埋め込み、ユーザーの Flash Player のバージョンを検出することをお勧めします。

iFrame は単に別のドキュメントを埋め込むものであり、必ずしもそのドキュメントが何であるかを暗示しているわけではありません。Flash Player の埋め込みである可能性もあります。

Flash Player の問題を簡単に回避したい場合は、次の JavaScript が UIWebView で確実に機能します。ただし、プレーヤーに同じレベルのカスタマイズは提供されません。

var iframe = $("<iframe>");

iframe.attr({
    width: "100%",
    frameborder: 0,
    src: "//www.youtube.com/embed/JW5meKfy3fY"    
});

// Or, append directly to body.
$("#viewport").append(iframe);

iOS アプリのこの行をテスト用のデモ URLに切り替えるだけです。

NSString *preURL = @"http://jsfiddle.net/KrshC/1/embedded/result/";
于 2013-09-01T03:47:29.910 に答える