2013-08-12 2 views
0

Я построил сайт, который включает в себя встроенные видео с YouTube. До недавнего времени они работали на всех устройствах, но в последнее время они перестали работать на iPhone (и iTouch).Встраиваемые видео Youtube перестали работать на iPhone

Видеоролики воспроизводятся всего несколько секунд, а затем отображаются только черный экран. Консоль показывает обычную YOUTUBE ошибки, и является одинаковыми для хрома на рабочем столе, а также сафари на Iphone:

Невозможно опубликовать сообщение .... Получатель имеет происхождение ....

Blocked кадра с происхождением .... от доступа к кадру с источником .... Протоколы, домены и порты должны совпадать.

В JS для загрузки видео игроков addapted из YouTube примеров API

// the width of player 
var plwidth = 274; 
var plheight = 171; 

// This code loads the IFrame Player API code asynchronously. 
var tag = document.createElement('script'); 

// This is a protocol-relative URL as described here: 
tag.src = "http://www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

// Create an <iframe> (and YouTube player) when the buttons are pressed.  
function onYouTubeIframeAPIReady(){ 
    //alert('youtube downloaded'); 

    var player; 

    var buttons = document.getElementsByClassName('playbutton'); 

    for(var i = 0; i < buttons.length; i++){   
     buttons[i].style.display = "block"; 
    } 

    // display play buttons 
    var button = document.getElementById('playbutton'); 

    button.onclick = function(){ 
     player = new YT.Player('player', { 
      height: plheight, 
      width: plwidth, 
      videoId: 'wr7-K42RXh8', 
      events: { 
       'onReady': onPlayerReady, 
      } 
     }); 
     return false;  
    } 

} 

// The API will call this function when the video player is ready. 
function onPlayerReady(event) { 
    var videoplaceholder = document.getElementById('videoplaceholder'); 
    videoplaceholder.style.display = "none"; 
    event.target.playVideo(); 
    var button = document.getElementById('playbutton'); 
    button.style.display = "none";   
} 

Любые идеи, почему он вдруг перестал работать на iPhone (он работает на IPad)? Любая помощь действительно ценится.

веселит

ответ

0

Попробуйте использовать этот метод для воспроизведения видео с Youtube в UIWebView.

-(NSString*)htmlStringForEmbeddingYTVideoWithVideoID:(NSString*)videoId andPlayerWindowSide:(CGSize)playerWindowSize 
{ 
    NSString *htmlString = [NSString stringWithFormat:@"<!DOCTYPE html><html><body style=\"margin:0 0 0 0\" bgcolor=\"#000000\"><!-- 1. The <iframe> (and video player) will replace this <div> tag. --><div id=\"player\" style=\"height:%dpx; width:%dpx;\"></div><script>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 player;function onYouTubeIframeAPIReady() {player = new YT.Player('player', {height: '%d',width: '%d',videoId: '%@', playerVars : { 'showinfo' : 0 },events: {'onReady': onPlayerReady,'onStateChange': onPlayerStateChange}});} function onPlayerReady(event) { event.target.playVideo(); } var done = false; function onPlayerStateChange(event) { if (event.data == YT.PlayerState.PLAYING && !done) { setTimeout(stopVideo, 6000); done = true; } } function stopVideo() { player.stopVideo(); } </script> </body> </html>",playerWindowSize.height,playerWindowSize.width,playerWindowSize.height,playerWindowSize.width,videoId]; 
    return htmlString; 
} 
+0

Спасибо за ответ: Я не знаком с UIWebView. Мне удалось получить его работу с помощью playerVars: { \t \t \t \t \t 'автозапуск': 1, 'контролирует': 1, 'ShowInfo': 0 \t \t \t \t \t}, – user2673654

+0

gr8! если ответ был вам полезен, вы можете выбрать галочку в сторону и сделать его зеленым. Это моя репутация. Благодаря! :) – CodenameLambda1

Смежные вопросы