ios AudioEngineImpl 2.4.11音频无法播放必现路径

2.4.11版本复现了ios手机上接打电话后音效消失必现路径

1:音效消失原因
bool AudioEngineImpl::resume(int audioID)
{
NSLog(@“集成测试的音频resume ID:%@”, [[NSString alloc] initWithFormat:@"%d", audioID]);
if (!_checkAudioIdValid(audioID)) {
NSLog(@“集成测试的音频 resume _checkAudioIdValid return false”);
return false;
}
NSLog(@“集成测试的音频 resume after alSourcePause”);
bool ret = true;
alSourcePlay(_audioPlayers[audioID]->_alSource);
auto error = alGetError();
if (error != AL_NO_ERROR) {
NSLog(@“集成测试的音频 resume error”);
ret = false;
ALOGE("%s: audio id = %d, error = %x", PRETTY_FUNCTION,audioID,error);
}
return ret;
}

这段代码中 alSourcePlay(_audioPlayers[audioID]->_alSource); crash
2023-09-21 13:33:00.779443+0800 SzygP-mobile[2968:410431] 集成测试的音频resume ID:0

2023-09-21 13:33:00.779539+0800 SzygP-mobile[2968:410431] 集成测试的音频 resume after alSourcePause

2023-09-21 13:33:00.779599+0800 SzygP-mobile[2968:410431] 集成测试的音频 resume _checkAudioIdValid 音频存在

2023-09-21 13:33:00.779685+0800 SzygP-mobile[2968:410431] 集成测试的音频 resume error

E/AudioEngine-inl.mm (560): bool cocos2d::AudioEngineImpl::resume(int): audio id = 0, error = a004

2:必现方法,手机A打开游戏,不论是否静音状态,手机B给A打电话,A手机接到电话后不要立即接起,点开电话详情,然后回到桌面,通过左上角小电话图标再次打开接电话界面,然后接起电话,随即挂断。此时再将后台的游戏调出前台,crash发生。

3:这种回到前台crash之前,游戏调至后台时, bool AudioEngineImpl::pause( int audioID)方法内
alSourcePause(_audioPlayers[audioID]->_alSource);也发生了一次crash“
E/AudioEngine-inl.mm (533): bool cocos2d::AudioEngineImpl::pause(int): audio id = 0, error = a003
但经过测试,其他方式调整前后台的时候也有概率发生,但并不影响resume方法执行,只有resume的crash发生后,音频消失,并且不杀死进程前任何饮品无法再次播放。

2赞

在另一篇帖子看说是 alcMakeContextCurrent(nullptr);后,回到前台先播放了音效,后alcMakeContextCurrent(s_ALContext)导致,但是在我更多的打印中发现设置回上下文发生在恢复音效播放之前打印

@dumganhar @pandamicro

还可以简单复现,接电话后切后台,挂掉电话之后切前台就会必现

持续关注 :flushed:

有没有官方人出来解释一下,这个东西怎么修复呢

creator 2.4.13
iphone10 ios 16.7.2; iphone 15 ios17.5.1; iphone 12 ios17.5.1
IOS原生 不是H5

和你一样的操作
有2种情况,来电话了
1.游戏切后台最小化,打完电话后,没有任何音效. 背景和音效都没有了 必现
2. 游戏不最小化,打完电话后,声音正常. 电话完了切下后台再回应用,音乐和音效都没有了
声音消失后,再次播放背景音乐和音效都没有声音

就是为了用ASTC才升级的 2.4.13 结果出了这个问题 :rofl:
但是我这样操作没有出现crash 只是音乐和音效全部消失了
希望是引擎层的问题 等官方修复

确定是引擎层面ios调用音频部分的问题,不过我们目前使用的3.x,2.x和3.x应该差不多,没有crash但是会有引擎打印的报错