当app在后台时,freestreamer无法恢复播放音乐结束后播放音乐(实际上没有声音)

时间:2015-05-26 11:54:57

标签: ios avaudioplayer background-music audio

我尝试使用freestreamer播放音乐,当app在后台播放时,音乐可以停止,但如果通话结束(CTCallStateDisconnected),音乐无法再次恢复,它可以在通话结束时捕捉到状态(AVAudioSessionInterruptionTypeEnded)在名为

的FSAudioStream函数中
    } else if ([interruptionType intValue] == AVAudioSessionInterruptionTypeEnded) {
    if (self.wasInterrupted) {
        self.wasInterrupted = NO;

        @synchronized (self) {
            [[AVAudioSession sharedInstance] setActive:YES error:nil];
            fsAudioStreamPrivateActiveSessions[[NSNumber numberWithUnsignedLong:(unsigned long)self]] = @"";
        }

        if (self.wasContinuousStream) {
            /*
             * Resume playing.
             */
            [self play];
        } else {
            /*
             * Resume playing.
             */
           [self playFromOffset:_lastSeekByteOffset];
        }
    }
}

并且应用程序也可以在后台捕获kFsAudioStreamPlaying状态,这意味着重新开始播放音乐,但我根本无法听音乐!谁能知道如何解决这个问题? 顺便说一句,我也设置了

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

支持后台游戏。

2015年5月27日更新:

我读过一些关于:Background audio doesn't resume after a call的内容,在这种情况下,可以在代码中捕获此中断通知,也可以检测到呼叫结束状态并重新启动音乐,但根本没有声音

1 个答案:

答案 0 :(得分:0)

很开心,解决了这个问题:在后台,我们应该添加一些代码来支持后台播放

            @synchronized (self) {
            [[AVAudioSession sharedInstance] setActive:YES error:nil];
            [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
            fsAudioStreamPrivateActiveSessions[[NSNumber numberWithUnsignedLong:(unsigned long)self]] = @"";
        }

这将解决这个问题!!