《狼人杀》&《谁是卧底》RTC 接入说明

《狼人杀》《谁是卧底》游戏,允许玩家通过语音玩游戏,并根据游戏规则,在不同阶段设置:允许玩家发言、禁止玩家发言、允许玩家收听其他玩家发言、禁止玩家收听其他玩家发言。 本文档为App 使用自身RTC和《狼人杀》《谁是卧底》游戏(以下简称:游戏)进行集成提供指导。

一、背景

在此以hello-sud-plus-android和hello-sud-plus-ios 为例,源码地址:

hello-sud-plus以SudMGPWrapper封装集成 SudMGP SDK,我们建议App用SudMGPWrapper集成SDK。 App为玩家提供的语音能力来自于App集成的RTC SDK 游戏决定玩家什么时候发言、什么时候收听发言

  • 允许玩家发言: 开启RTC推流
  • 禁止玩家发言: 关闭RTC推流
  • 允许玩家收听其他玩家发言: 开启RTC拉流
  • 禁止玩家收听其他玩家发言: 关闭RTC拉流

二、游戏发送“开启/关闭 RTC拉流”状态,允许/禁止收听其他玩家发言

state:
mg_common_self_headphone
data:
{
    "isOn": true    // 耳机(听筒,喇叭)开关状态 true: 开(APP开启RTC拉流);false: 关(APP关闭RTC拉流)
}
  • Android: 客户App实现SudFSMMGListener接口,在onGameMGCommonSelfHeadphone方法中根据model.isOn 来决定开启RTC拉流。还是关闭RTC拉流


// 耳机(听筒,扬声器)状态
@Override
public void onGameMGCommonSelfHeadphone(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfHeadphone model) {
    boolean isOn = model != null && model.isOn;
    If (isOn) {
       //开启RTC拉流
    } else {
      //关闭RTC拉流
    }
    ISudFSMStateHandleUtils.handleSuccess(handle);
}
  • iOS: 客户App实现SudFSMMGListener协议,在onGameMGCommonGameSelfHeadphone方法中根据model.isOn 来决定开启RTC拉流。还是关闭RTC拉流
/// 游戏: 耳机(听筒,扬声器)状态   MG_COMMON_GAME_SELF_HEADEPHONE
- (void)onGameMGCommonGameSelfHeadphone:(nonnull id<ISudFSMStateHandle>)handle model:(MGCommonGameSelfHeadphone *)model {
    if (model.isOn) {
        //开启RTC拉流
    } else {
       //关闭RTC拉流
    }
    [handle success:[self.sudFSMMGDecorator handleMGSuccess]];
}

三、游戏发送“开启/关闭 RTC推流”状态,允许/禁止玩家发言

state:  
mg_common_self_microphone
data:
{
    "isOn": true    // 麦克风开关状态 true: 开(APP开启RTC推流);false: 关(APP关闭RTC推流)
}
  • Android: 客户App实现SudFSMMGListener接口,在onGameMGCommonSelfMicrophone方法中根据model.isOn 来决定开启RTC推流。还是关闭RTC推流
    // 麦克风状态
    @Override
    public void onGameMGCommonSelfMicrophone(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfMicrophone model) {
        boolean isOn = model != null && model.isOn;
        If (isOn) {
            //开启RTC推流
        } else {
            //关闭RTC推流
        }
        ISudFSMStateHandleUtils.handleSuccess(handle);
    }
  • iOS: 客户App实现SudFSMMGListener协议,在onGameMGCommonGameSelfMicrophone方法中根据model.isOn 来决定开启RTC推流。还是关闭RTC推流
/// 游戏: 麦克风状态   MG_COMMON_GAME_SELF_MICROPHONE
- (void)onGameMGCommonGameSelfMicrophone:(nonnull id<ISudFSMStateHandle>)handle model:(MGCommonGameSelfMicrophone *)model {
    if (model.isOn) {
        //开启RTC推流
    } else {
        //关闭RTC推流
    }
    [handle success:[self.sudFSMMGDecorator handleMGSuccess]];
}

四、APP切入后台

如果App此时正在推流,App要主动停止推流 如果App此时正在拉流,App要主动停止拉流 此外App什么都不用做,不需要记录此时的推/拉流状态

五、APP重新进入前台

游戏会将切后台期间的状态变化发给App, App响应mg_common_self_headphone决定是否拉流,响应mg_common_self_microphone决定是否推流。 其他什么都不用做

results matching ""

    No results matching ""