2013年03月14日

【iPhone SDK】iOS5とiOS6でUIWebView上でのYouTube表示内容が異なる

結構前に
UIWebViewを使用してYouTube動画を再生するという記事と
UIWebViewを使ったYouTube再生を自動で行う方法という記事を書きました。

当時2011年なので、iOS4の時ですね。
iOS6がリリースされ、大幅に変更があり、開発者側には対応がかなり求められてしまいます。

なんとなく久しぶりにこの処理を実装してみたら気づいたところがあったのでメモ



まずは記事にあげたembedタグを使った配置

iOS5
IOS5_embed.PNG

このボタン表示のおかげで、自動再生処理を実行できるわけですが、

iOS6
IOS6_embed.PNG

??

なんだこれ
iFrameを使うと自動再生するためのボタンが取得できないという理由になった
ボタンが表示されている

案の定自動再生処理のコードが実行出来ませんでした。

subviewたちのクラス名を取得すると
iOS5にはUIWebBrowserViewの下に
YouTubePlugInViewというビューがあり、その中にイメージビューやビューが存在しているようです。
その中のビューの1つが再生ボタンを指しており、インスタンス取得してボタン押下処理を実行していました。

しかし、iOS6からはUIWebBrowserViewが最下層のビューとなっており、
UIWebViewの読み込み完了デリゲートが2回コールされてきました…
あきらかに挙動が異なります。

自動再生をあきらめてiframeタグを使った方法で表示をすると

iOS5
IOS5_IFrame.PNG

iOS6
IOS6_Iframe.PNG

うん、これなら表示は一緒ですね
動画サムネイルの上に動画タイトルが表示されるようになりますが…
小さく表示すると邪魔ですね

うーん、YouTubeアプリがシステムから削除されたiOS6からこの当たりの挙動も変更があった証拠ですね
もし自動再生実装していた人はお気をつけください。

HTML5を使って自動再生をするっという記事を英語サイトで見つけましたが
未検証なので検証できたらまた書きます。


ラベル:iOS6 Xcode
posted by ヒイロ at 11:57| 福岡 ☁| Comment(0) | TrackBack(0) | プログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

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