在移动

时间:2015-06-16 17:13:53

标签: javascript deezer

在我的Deezer InApp中,当我使用非零偏移调用DZ.player.playAlbum方法时,例如DZ.player.playAlbum(10008268, true, 0, 13),播放从Deezer桌面网站上的给定偏移量开始,但在移动应用程序(Android和iOS)中,播放从头开始。移动设备不支持偏移吗?有解决方案吗?这对我来说是一个重要的特征。

1 个答案:

答案 0 :(得分:0)

我发现基于DZ.player.seek的解决方法似乎适用于Android,但在receiving player_position events works on iOS之前它无法在iOS上运行:

const album = 10008268;
const trackIndex = 0;
const offset = 10;

DZ.player.playAlbum(album, true, trackIndex, tracklist => {
  if (offset) {
    DZ.Event.subscribe('player_position', args => {
      const position = args ? args[0] : null;
      if (position) {
        const currentTrack = tracklist.tracks[trackIndex];
        const currentTrackLength = Number(currentTrack.duration);
        const seekOffset = offset / currentTrackLength * 100;
        DZ.player.seek(seekOffset);

        setTimeout(() => DZ.Event.unsubscribe('player_position'));
      }
    });
  }
});

需要侦听player_position个事件,因为如果玩家位置为0,则调用DZ.player.seek似乎无效。此外,我需要使用setTimeout取消订阅回调函数之外的内容,否则我得到一个例外。