SoundManager 2和iPhone

时间:2013-02-28 14:28:37

标签: iphone html5 audio soundmanager2

以下代码在我的桌面浏览器中有效但在我的iPhone上的Safari中无效,它确实显示alert()但不播放音频。我做错了什么?

soundManager.url = '/assets/backend/swf/';
soundManager.preferFlash = false;
soundManager.useHTML5Audio = true;
soundManager.onready(function(){
    function playSong(){
        soundManager.createSound({
            id: 'song_<?=$song->ID?>',
            url: '/backend/song/play/<?=$song->ID?>',
            type: 'audio/mp3'
        }).play();
    }

    $('#play').click(function(){
        alert('playSong()');
        playSong();
    });
});

1 个答案:

答案 0 :(得分:1)

从我所看到的情况来看,iPhone不喜欢“自动播放”的声音,而且它们需要通过用户互动来播放声音。

在你的情况下,iOS浏览器一定不喜欢你正在创建声音然后立即播放它。

尝试使用此变体,看看它是否适合您:

soundManager.url = '/assets/backend/swf/';
soundManager.preferFlash = false;
soundManager.useHTML5Audio = true;
soundManager.onready(function(){
    // Create the sounds here (don't call play)
    soundManager.createSound({
        id: 'song_<?=$song->ID?>', // It is not cool to put PHP here, read below!
        url: '/backend/song/play/<?=$song->ID?>',
        type: 'audio/mp3'
    });

    $('#play').click(function(){
        var soundId = 'song_<?= $song->ID ?>';
        soundManager.play(soundId);
    });
});

作为旁注:我建议你以这种方式混合使用JS和PHP。检查这个SoundManager2示例,了解如何“扩充”常规MP3链接,如下所示:

<a href="blabla.mp3">Click here to play blabla</a>

进入播放MP3 onclick的东西: SoundManager2 documentation

问候并祝你好运!