【问题标题】:SoundCloud API stream on ios / iphoneios / iphone上的SoundCloud API流
【发布时间】:2015-09-10 22:47:11
【问题描述】:

通过 SC API / Javascript SDK 2.0.0 的流操作是否应该在 iOS/Safari 上工作? 我发现它与下面的简单示例无关。

SoundManager 似乎能够知道如何以及何时使用 html5。我弄错了吗?

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>Sound Cloud iOS test</h1>
<script src="//connect.soundcloud.com/sdk-2.0.0.js"></script>
<script type="text/javascript">
    SC.initialize({
        client_id: "YOUR_CLIENT_ID"
    });

    SC.stream(
            '/tracks/293',
            function(sound) {
                sound.play()
            }
    );
</script>
</body>
</html>

【问题讨论】:

    标签: ios html api sdk soundcloud


    【解决方案1】:

    未经用户启动,您无法在 iOS 设备上的 Safari 中强制播放或下载任何音频/视频文件。

    在 iOS 上的 Safari(适用于所有设备,包括 iPad)中,用户可以 位于蜂窝网络上并按数据单元收费、预加载和 自动播放被禁用。在用户启动数据之前不会加载数据。 这意味着 JavaScript play() 和 load() 方法也处于非活动状态 直到用户开始播放,除非 play() 或 load() 方法 由用户操作触发。换句话说,用户发起的 Play 按钮有效,但 onLoad="play()" 事件无效。

    这会播放电影:&lt;input type="button" value="Play" onclick="document.myMovie.play()"&gt;

    这在 iOS 上没有任何作用:&lt;body onload="document.myMovie.play()"&gt;

    您需要将播放动作包装到一个按钮中,以便音频流是可选的而不是自动的。

    在 Safari 文档中查看 this article 以供参考。

    【讨论】:

    • 我的用例确实需要用户启动,但该操作从 stream() 中调用 play()。直接从绑定操作调用 play() 会按预期工作。谢谢!
    • 在这种情况下,等待流操作完成后再尝试从调用事件播放的最佳方法是什么?似乎回调是触发播放动作的禁区。
    • 我能找到的最佳解决方案是在事件处理程序中调用播放和立即暂停。这可以防止回调的播放操作被禁止。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多