====== 主持模式 ====== 前言:本文将简要分享语音聊天室中主持玩法的的应用场景,并讲述基于环信语聊解决方案,实现主持玩法的步骤。 **注:**环信语聊解决方案是基于环信 **SDK 3.6.0** 及以上实现,开发者如需实现,需将 SDK 更新到支持版本。 语音电台是目前很多社交 APP 的玩法,在语音电台中,主播进行语音直播,用户进入直播间收听,主播也可邀请用户语音连麦互动(一般需要打赏或者付费后)。 在语音电台类的直播间,一般都会设有一个主持人来管理连麦,以维持连麦的秩序,可支持“抱麦”、“连麦”、“禁麦”、“轮麦”、“排麦”等能力的“麦序管理”功能,将让用户在游戏的过程中更“嗨”,更“带感”。由于这种产品模式,用户的活跃度较高,付费意愿也更高,市场上如伴伴、吱呀、音泡等不少以语音电台为核心社交产品都获得了不错的流水。 {{ :im:other:integrationcases:音泡1.png?nolink&200 |}} 总结来说,语音电台的连麦管理就是一种主持人模式,这种模式由于人人都想和主播连麦,出风头表现,必定会需要一定的门槛,即送礼可上麦。该模式其实就是在语音聊天室的基础上的一种“主持”玩法。环信语聊解决方案,针对“主持”玩法的实现已经为开发者给出了方案。 主持玩法是目前语音连麦聊天室中必备的玩法之一。通过房主的主持,大家可以有序的进行发言,更好的组织聊天室的互动场景。 在主持模式,由房主指定谁可以发言,被指定的主播可以发言,其他人不能发言。这个功能是通过会议属性来实现的,当房主指定发言人后,房主修改会议属性,所有人收到会议属性变更通知,如果发现会议属性中是指定的自己发言,自己打开麦克风。其他人关闭。当房主指定另外一个主播发言时,房主修改会议属性,所有人收到会议属性变更通知,当前主播自动下麦。 我们可以通过一张图,来了解主持模式中接口的调用逻辑: {{:im:other:integrationcases:主持模式1.png?nolink|}} 上图中每步涉及到的iOS/Android接口如下: ^步骤^iOS API^Android API^ |1.设置主持会议属性|[[http://www.easemob.com/apidoc/ios/chat3.0/protocol_i_e_m_conference_manager-p.html#a7e29cc54c08e9cab13a3b58df89eea80|EMClient.sharedClient.conferenceManager setConferenceAttribute: value: completion:]] |[[http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1EMConferenceManager.html#a785be01c2f30dbe661fb91c9c8cac7a9|EMClient.getInstance().conferenceManager().setConferenceAttribute(key, value, callback);]]| |2.广播会议属性|[[http://www.easemob.com/apidoc/ios/chat3.0/protocol_e_m_conference_manager_delegate-p.html|EMConferenceManagerDelegate#-conferenceAttributeUpdated:attributes:]] |[[http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1EMConferenceAttribute.html|EMConferenceListener#onAttributesUpdated(attributes);]]| |3.指定某个主播发言,并修改会议属性|[[http://www.easemob.com/apidoc/ios/chat3.0/protocol_i_e_m_conference_manager-p.html#a7e29cc54c08e9cab13a3b58df89eea80|EMClient.sharedClient.conferenceManager setConferenceAttribute: value: completion:]] |[[http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1EMConferenceManager.html#a785be01c2f30dbe661fb91c9c8cac7a9|EMClient.getInstance().conferenceManager().setConferenceAttribute(key, value, callback);]]| |4.广播会议属性|[[http://www.easemob.com/apidoc/ios/chat3.0/protocol_e_m_conference_manager_delegate-p.html|EMConferenceManagerDelegate#-conferenceAttributeUpdated:attributes:]] |[[http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1EMConferenceAttribute.html|EMConferenceListener#onAttributesUpdated(attributes);]]| |5.指定者说话,其他人闭麦|[[http://www.easemob.com/apidoc/ios/chat3.0/protocol_i_e_m_conference_manager-p.html#abc3d1658875a99bdd1f5f1158a74e789|EMClient.sharedClient.conferenceManager updateConference: isMute:]]|[[http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1EMConferenceManager.html#a7b4bd022d9daf8fe127d89494897bf99|EMClient.getInstance().conferenceManager().openVoiceTransfer();EMClient.getInstance().conferenceManager().closeVoiceTransfer();]]| |6.指定某个主播发言,并修改会议属性|[[http://www.easemob.com/apidoc/ios/chat3.0/protocol_i_e_m_conference_manager-p.html#a7e29cc54c08e9cab13a3b58df89eea80|EMClient.sharedClient.conferenceManager setConferenceAttribute: value: completion:]] |[[http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1EMConferenceManager.html#a785be01c2f30dbe661fb91c9c8cac7a9|EMClient.getInstance().conferenceManager().setConferenceAttribute(key, value, callback);]]| |7.广播会议属性|[[http://www.easemob.com/apidoc/ios/chat3.0/protocol_e_m_conference_manager_delegate-p.html|EMConferenceManagerDelegate#-conferenceAttributeUpdated:attributes:]] |[[http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1EMConferenceAttribute.html|EMConferenceListener#onAttributesUpdated(attributes);]]| |8.指定者说话,其他人闭麦|[[http://www.easemob.com/apidoc/ios/chat3.0/protocol_i_e_m_conference_manager-p.html#abc3d1658875a99bdd1f5f1158a74e789|EMClient.sharedClient.conferenceManager updateConference: isMute:]]|[[http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1EMConferenceManager.html#a7b4bd022d9daf8fe127d89494897bf99|EMClient.getInstance().conferenceManager().openVoiceTransfer();EMClient.getInstance().conferenceManager().closeVoiceTransfer();]]| 语音聊天室的模式玩法,不止环信语音聊天室解决方案中提到的玩法。环信提供的语聊集成方案对准备集成开发聊天室和正在搭建连麦聊天室的开发者来说,可以更好的从产品集成层面理解环信 IM 即时通讯云、音视频云所提供的具体功能之外;还能通过实际体验、操作,帮助开发者构思出更多的互动玩法,扩展更多有意思的场景。 ---- 上一页:[[im:other:integrationcases:tc|语音连麦聊天室]] 下一页:[[im:other:integrationcases:robmic|抢麦模式]]