现象描述:
A 用户正在前台通话或者直播, 这时收到一条消息并响起消息提示音,之后房间内其他人听不到 A 用户的声音,或者 观众收到消息后听不到主播声音。
原因:
苹果的 AudioSession 不同 Category 允许的行为不同,通话过程中需要尽量避免其他操作影响 AudioSession 的值。
解决办法:
/*!
* \~chinese
当App处于前台时,接收到消息并播放提示音的回调方法
@param message 接收到的消息
@return 当返回值为NO时,SDK会播放默认的提示音;当返回值为YES时,SDK针对此消息不再播放提示音
@discussion 收到消息时播放提示音之前,会执行此方法。 如果App没有实现此方法,SDK会播放默认的提示音。
流程:
SDK接收到消息 -> App处于前台状态 -> 回调此方法准备播放提示音 -> App实现并返回YES -> SDK针对此消息不再播放提示音
-> App未实现此方法或者返回NO -> SDK会播放默认的提示音
您可以通过 RCKitConfigCenter.message.disableMessageAlertSound 属性,关闭所有前台消息的提示音(此时不再回调此接口)。
*/
- (BOOL)onRCIMCustomAlertSound:(RCMessage *)message;
//设置代理给Appdelegate或者其他单例对象:
[RCIM sharedRCIM].receiveMessageDelegate = self;
//实现方法:
- (BOOL)onRCIMCustomAlertSound:(RCMessage *)message{
if ([RCKitUtility isAudioHolding]||[RCRTCEngine sharedInstance].room) {
return YES;
}else{
return NO;
}
}