【iPhone SDK】UIWebViewを使ったYouTube再生を自動で行う方法

去年の8月にこちらのエントリーにてiPhoneアプリ内でのYouTube動画の再生方法をメモしました。

この方法で作成したUIWebViewをaddSubviewされたらお気づきかと思いますが、
サムネイルの画像の上に再生マークのボタンが現れ、このボタンをタップすることではじめて動画の再生が開始されます。

ユーザーにこの操作をさせるのは煩わしく感じ取られる可能性があるため、自動化する方法を実は前回の仕事のときにしていたのですが、
完全にメモもれていたので、今更明記します。

参考にしたサイトはこちらのフォーラム

処理の流れは次の通りです。

1 UIWebViewのdelegateを受け取るように設定
2 UIWebViewにYouTube再生タグのHTMLを読み込ませる
3 DelegateによってHTML読み込み完了時にコールバック関数が実行される(webViewDidFinishLoad)
4 取得したUIWebView内にsubViewが存在し続ける限り潜り続け、ボタンクラスを見つける(findButtonInView)
5 見つかったボタンを押した処理を実行!([b sendActionsForControlEvents:UIControlEventTouchUpInside];)

このような感じになっています。
このフォーラムにあわせて簡単に動画のIDを設定できるようにTemplateのテキストを用意しておきました。
YouTubeTemplate.txt

Resourceに登録することでフォーラムのソースをそのまま使えます。
今回Delegateを用いて自動化しているので、
UIWebViewをaddSubViewしなくてもYouTube動画の再生が行えます。

つまり、動画再生終了後にUIWebViewが邪魔だなぁっといったことがなくなるのですね。
これは便利

動画一覧ページにて選択した動画IDにて選択したときのイベントでささっとUIWebViewをautoreleaseで作成し、
読み込み!ってするだけでプログラム側はUIWebViewのメモリ管理は考えなくて良さそうかな?

2011/06/08追記:
autoreleaseでつくってしまうとメソッドを抜けたあと解放されてしまうため、読み込み完了後のデリゲート処理が正しく動きませんでした。
付け足しですが、YouTubeの動画ページにて、「共有」→「埋め込み」ボタンを押すとHTMLコードが表示されますが、
iframeのタグを使うと再生開始のボタンがプログラムで正しく取得できないようです。
「古い埋め込みコードを使う」にチェックをいれ、objetとembedタグを使ったものを使用しましょう



この記事へのコメント

  • L

    この処理がここ一週間くらいまえから
    正常に動作しなくなってしまったのは
    私だけ?
    2011年06月05日 22:07
  • ヒイロ

    addSubViewしてみて、とりあえずUIWebViewを表示してみても変わりませんか?

    元々正常に動作してたのに動かなくなったいうことですよね?

    近いうちに空き時間作って自分も確認してみようかと思います。
    2011年06月06日 22:29
  • L

    そうなんです。
    おそらくなのですが、ボタンを検索しているところでいままでは再生ボタンがとれていたけど、今は再生ボタンがただの絵になっていて、ボタンはダミーでそれにaction発行すると、再生が終了してしまうようしかけられてるようなのです。
    私以外もそうなるかどうかがしりたいです。
    2011年06月06日 22:58
  • ヒイロ

    テストしてみました。
    記事に載せているテンプレートを使ってUIWebViewを読み込むと、ちゃんとYouTubeの動画が再生されました。

    autoreleaseをしてしまうと解放されているため、デリゲートに飛んでこないようです。記事を修正しておきます。

    YouTube自体が埋め込みコードをiframeタグを使った新しいバージョンを基本としていますが、これだとボタンが取得できませんでした。古いコードを使用するにチェックをいれ、embedのものを使用してはいかがでしょうか?
    2011年06月08日 11:19

この記事へのトラックバック

YouTubeの動画を自動再生したい
Excerpt: どうも、僕です。 いいえ、UTOです。 前回、YouTubeの動画をアプリ内で再生する方法を紹介しました。 試された方はお気づきかと思いますが、NavigationControllerで..
Weblog: iPhone アプリ研究会
Tracked: 2011-06-08 12:03