我正在使用AVPlayer而我只是试图正确地切换我的播放/暂停按钮。我无法根据用户操作进行切换,因为我有时会自动启动/停止播放器。
所以我正在观察AVPlayer的rate
键,当发送通知时,我会检查rate
。
除了一种情况外,这种方法很有效。当应用程序进入后台然后再次激活时,速率首先进入" 1"然后到" 0"。所以按钮从"暂停"到"玩"。
但是,视频会继续播放,但我从未收到" 1"的另一个rate
通知。
我甚至将其添加到观察rate
的代码块:
[self performSelector:@selector(logRate) withObject:nil afterDelay:3.0];
我只是在最后一次" 0"之后3秒再次检查费率。观察到了费率变化。视频仍然在播放,但速度仍然是" 0"。
有没有人知道:
1.为什么会这样?
2.除了rate
之外,是否有更好的方法来观察AVPlayer是播放还是暂停?
答案 0 :(得分:0)
我不知道为什么会发生这种情况,但我确实找到了一个孤立的解决方案,也可以帮助更有知识的人解决这个问题。
我发现如果我在前往背景之前“暂停”播放器,当我前往前景并恢复“播放”时,我从未将速率从“1”变为“0”。它去了“1”并留在那里。
所以对于我的情况,我只是添加了一个观察:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(willResignActive:) name:UIApplicationWillResignActiveNotification object:nil];
我现在暂停播放器willResignActive:
。
这告诉我的是,在AVPlayer
正在播放时进入后台会使AVPlayer
处于导致我询问的错误的状态,但我不知道任何进一步的详细信息现在