この問題についてここで多くの投稿を見てきましたが、この問題に対する完璧な答えはまだ見つかりませんでした.
テーブルビューがあり、各セルには再生ボタンがあります。ユーザーが再生ボタンをタップすると、UIWebView
このセルに a が追加され、YouTube ビデオが再生されます。
static NSString *youTubeVideoHTML = @"<html>\
<body style=\"margin:0;\">\
<iframe class=\"youtube-player\" type=\"text/html\" width=\"%0.0f\" height=\"%0.0f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\">\
</iframe>\
</body>\
</html>";
- (void)playVideoWithId:(NSString *)videoId {
NSString *html = [NSString stringWithFormat:youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId];
[self loadHTMLString:html baseURL:nil];
}
問題:
このコードは、実際には私が望むようにビデオを再生しません。YouTube プレーヤーを開始して、YouTube の赤い再生ボタンで表示するだけです。ユーザーが赤いボタンをタップした場合にのみ、ビデオの再生が開始されます。
そのため、ユーザーはビデオが始まるまで 2 つのボタンをタップする必要があります。これは最高のユーザー エクスペリエンスではありません...
私が言ったように、この問題に関する多くの投稿を見ましたが、まったく機能しないものもあれば、機能するものもありますが、私を悩ませている問題があります。
私が見つけた有効な解決策の 1 つは、@ilias によるこの投稿にありました。彼は、(私のように文字列ではなく) ファイルから HTML をロードしてこれを機能させる方法を示しています。このアプローチの問題は、私が再生するすべてのビデオに対して私がする必要があるのは:
htm ファイルをロードする -> ビデオ ID を埋め込む -> ファイルをディスクに書き込む -> ビデオを再生できるようになるのは今だけです。
奇妙なことに、このソリューションは、ファイルのコンテンツに等しい文字列からリクエストをロードしようとすると、ファイルから Web ビュー リクエストをロードした場合にのみ機能しますが、機能しません。