Внешний вид iOS для внешнего вида SoundCloud Widget

Я нашел ошибку, используя внешние элементы управления для виджета html5 на iOS, я протестировал с iphone и ipad. Элементы управления внутри виджета работают нормально. Однако на моем сайте клиентов http://www.bushytunes.net и виджет api playground http://w.soundcloud.com/player/api_playground.html внешние элементы управления запускают ошибку.

Вот что выводит консоль с детской площадки виджета:

SC.Widget.Events.PLAY {"loadedProgress":null,"currentPosition":0,"relativePosition":0} SC.Widget.Events.PAUSE {"loadedProgress":null,"currentPosition":0,"relativePosition":0} SC.Widget.Events.PLAY {"loadedProgress":null,"currentPosition":0,"relativePosition":0} SC.Widget.Events.PLAY {"loadedProgress":null,"currentPosition":0,"relativePosition":0} SC.Widget.Events.PLAY {"loadedProgress":null,"currentPosition":0,"relativePosition":0} SC.Widget.Events.READY {} Loading... 

Спасибо, Джеймс

TL; DR : iOS 6 должен работать с ограничением вызова для воспроизведения, чтобы быть инициатором пользователя, iOS5 и ниже, вероятно, не получит исправления.

Мы попытаемся разрешить это с помощью какого-то взлома, но, скорее всего, в ближайшее время это не получит правильного решения.

SoundCloud Widget использует HTML5 Audio для воспроизведения звуков на iOS. Есть два ограничения на запуск воспроизведения в iOS:

  1. Воспроизведение должно запускаться с помощью действия пользователя (поэтому в обработчике событий)
  2. Вызов метода audio.play должен находиться в стеке синхронных вызовов этого обработчика событий.

Это означает, что это работает:

 document.querySelector('.play-button').addEventListener('click', function () { audioController.play(); }, false); 

Но это не так:

 document.querySelector('.play-button').addEventListener('click', function () { setTimeout(function () { audioController.play(); }, 500); }, false); 

Междоменная связь между iframe возможна только асинхронно. Наша реализация использует postMessage DOM API, но даже более старые методы, такие как Fragment Identifier Messaging (FIM), использующие location.hash являются асинхронными. Это означает, что в настоящее время мы не видим способа включения воспроизведения через API для iOS5 и ниже (поскольку также нет резервной копии Flash).

Однако есть и хорошие новости: iOS6 отказался от ограничения №2 . Это означает, что до тех пор, пока вызов API для вызова вызывается действием пользователя, вы сможете воспроизводить звуки. Несмотря на то, что связь между вашим родительским окном и iframe виджетов остается асинхронной. К сожалению, iOS не отказался от этого ограничения.

Надеюсь, это поможет, и я обновлю этот ответ, если мы найдем подходящее обходное решение.

Мое предложение состояло в том, чтобы создать собственный пользовательский плеер с библиотекой Audio5JS или SoundManager2 в случае, если управление воспроизведением на iOS имеет решающее значение для вашего приложения.

Вы можете увидеть смутное описание того, что я говорю о ресурсе developer.apple.com .

Я не могу полностью сказать, пытается ли @gryzzly это сказать, но внешние элементы управления Widget API полностью нарушены на мобильных устройствах . Ответ объясняет, почему – вы не можете синхронно сообщать iFrame о воспроизведении звука, но я понимаю, что правильные вызовы iframe.contentWindow будут синхронными? Возможно, я ошибаюсь.

Попробуйте направлять свой мобильный телефон на игровую площадку виджета API: https://w.soundcloud.com/player/api_playground.html

Даже там он фактически не воспроизводится, если вы не нажмете оранжевую кнопку.

Довольно раздражает, так как нет никакого приложения, чтобы обойти ограничение потокового API. Кажется, что буквально нет возможности получить сайт, на котором может работать более 15 000 запросов / игр в день для работы с SoundCloud на мобильных устройствах. Я просто хочу непрерывное воспроизведение музыки.

  • Как SoundCloud Auto Воспроизведение следующей песни на мобильном сайте?
  • Начните воспроизведение аудиопотока SoundCloud в iOS с помощью предварительного буфера
  • Внедрение API SoundCloud в приложении iOS - получение ошибки
  • Потоковая передача пользовательских треков из звукового облака в приложение
  • URL для открытия трека в приложении SoundCloud iOS
  • SoundCloud API для iOS не используется на facebook
  • Архитектура SoundCloud iOS SDK
  • Звуковое шифрование iOS
  • Interesting Posts

    Почему Array является AnyObject в Swift?

    Обновление iOS 9 Отложенное местоположение не работает

    iOS, как найти код страны на номер телефона пользователя?

    Повреждение CoreTelephony по причине: получено уведомление без имени уведомления

    Facebook FBSDKAppInviteContent – Отсутствует URL ссылки на приложение

    «Неопределенные символы для архитектуры i386», пытающиеся использовать iCarousel

    Легко загружает изображения асинхронно в UITableView с использованием GCD

    В контакте отсутствуют некоторые из требуемых дескрипторов ключей при отображении через CNContactViewController

    Как обмениваться контентом на WhatsApp с iOS

    Элементы с фиксированной позицией медленно отображаются на iPhone Safari

    AFNetworking HTTP Proxy

    Создать PDF-форму в объекте c с изображением

    как уловить несколько экземпляров, указанных специально ** символами ** в NSString и смелыми между ними?

    Невозможно подключить файл .xib после того, как соответствующие классы уже созданы.

    Приложение iPhone Отправка: ERROR ITMS-90171: Неверная структура пакета (константы.о)

    Давайте будем гением компьютера.