Ios 当玩家到达指定时间时如何得到通知
我需要检测在Ios 当玩家到达指定时间时如何得到通知,ios,audiokit,Ios,Audiokit,我需要检测在AKPlayer中何时达到特定的时间戳。当达到该点时,我将播放头向后移动,以重复歌曲的一部分,以支持应用程序中的鞋面功能 我目前的方法是使用每毫秒触发一次的计时器来检查播放器.currentTime是否达到或超过了特定时间。我看到的问题是currentTime的变化速度不够快,无法检测到这一点-它似乎每11毫秒更新一次,这对于我的用例来说不够精确。音频在我捕获之前超过了时间戳。在这里,你可以看到值并不会在每次定时器启动时改变,当它改变时,它的差值为11.6毫秒,因此如果我需要知道播放
AKPlayer
中何时达到特定的时间戳。当达到该点时,我将播放头向后移动,以重复歌曲的一部分,以支持应用程序中的鞋面功能
我目前的方法是使用每毫秒触发一次的计时器来检查播放器.currentTime
是否达到或超过了特定时间。我看到的问题是currentTime
的变化速度不够快,无法检测到这一点-它似乎每11毫秒更新一次,这对于我的用例来说不够精确。音频在我捕获之前超过了时间戳。在这里,你可以看到值并不会在每次定时器启动时改变,当它改变时,它的差值为11.6毫秒,因此如果我需要知道播放器何时达到0.5125秒,我不会检测到,直到播放器在这段时间内运行了约10毫秒
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
我探索的另一个选项是尝试使用KVO观察currentTime
,但不幸的是,它从未被调用
currentTimeObserver = player.observe(\.currentTime) { (player, change) in
print("Changed to \(player.currentTime)")
}
有没有办法更精确地跟踪currentTime
或在到达特定时间戳时注册以获得通知?是否将currentTimeObserver
保存在属性中?或任何其他“长寿命物体”?因为如果它只是函数中的一个临时对象,它将随着作用域本身的移除而被移除