差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
im:other:integrationcases:robmic [2019/05/31 09:10] jk |
im:other:integrationcases:robmic [2019/07/01 09:52] jk |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== 抢麦模式(内测版) ====== | + | ====== 抢麦模式 ====== |
前言:本文将简要分享语音聊天室中抢麦玩法的的应用场景,并讲述基于环信语聊解决方案,实现抢麦玩法的步骤。 | 前言:本文将简要分享语音聊天室中抢麦玩法的的应用场景,并讲述基于环信语聊解决方案,实现抢麦玩法的步骤。 | ||
行 17: | 行 17: | ||
总结来说,音遇的火热和“劲歌抢唱”这种模式密切相关。“劲歌抢唱”其实就是在语音聊天室的基础上的一种“抢麦”玩法。环信语聊解决方案,针对“抢麦”玩法的实现已经为开发者给出了方案。 | 总结来说,音遇的火热和“劲歌抢唱”这种模式密切相关。“劲歌抢唱”其实就是在语音聊天室的基础上的一种“抢麦”玩法。环信语聊解决方案,针对“抢麦”玩法的实现已经为开发者给出了方案。 | ||
- | 在抢麦模式下,只有抢到麦的主播可以发言,由 AppServer 来决定是否抢到麦,当房主发起抢麦时,首先请求 AppServer , AppServer 确定主播可以抢麦,返回成功的同时,AppServer 开始计时,在计时结束前或者抢到麦的主播主动释放麦之前,其他主播请求 AppServer 抢麦返回失败。主播抢到麦后,修改会议属性,告知所有人自己抢到了,同时开始倒计时,倒计时结束后,主动重新设置会议属性,告诉所有人自己释放麦。其他人收到抢麦的会议属性变化回调后更新UI,并开始倒计时,在倒计时结束或者收到释放麦的会议属性变化前,所有人不可以发起抢麦操作。 | + | 在抢麦模式下,只有抢到麦的主播可以发言,由 AppServer 来决定是否抢到麦,当房主发起抢麦时,首先请求 AppServer , AppServer 确定主播可以抢麦,返回成功的同时,AppServer 开始计时,在计时结束前或者抢到麦的主播主动释放麦之前,其他主播请求 AppServer 抢麦返回失败。主播抢到麦后,修改会议属性,告知所有人自己抢到了,同时开始倒计时,倒计时结束后,主动重新设置会议属性,告诉所有人自己释放麦。其他人收到抢麦的会议属性变化回调后更新 UI,并开始倒计时,在倒计时结束或者收到释放麦的会议属性变化前,所有人不可以发起抢麦操作。 |
我们可以通过一张图,来了解抢麦模式中接口的调用逻辑: | 我们可以通过一张图,来了解抢麦模式中接口的调用逻辑: | ||
- | {{:im:other:integrationcases:抢麦1.png?nolink|}} | + | {{:im:other:integrationcases:抢麦模式1.png?nolink|}} |
上图中每步涉及到的 iOS/Android 接口如下,其中部分调用到了 AppServer 的接口,开发者需要自己实现 AppServer 功能 | 上图中每步涉及到的 iOS/Android 接口如下,其中部分调用到了 AppServer 的接口,开发者需要自己实现 AppServer 功能 | ||
- | ^步骤^iOS API^Android API^ | + | ^步骤^%%iOS API%%^%%Android API%%^ |
- | |1.设置抢麦会议属性|EMClient.sharedClient.conferenceManager setConferenceAttribute: value: completion: |EMClient.getInstance().conferenceManager().setConferenceAttribute(key, value, callback);| | + | |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.广播抢麦会议属性|EMConferenceManagerDelegate#-conferenceAttributeUpdated:attributes: |EMConferenceListener#onAttributesUpdated(attributes);| | |2.广播抢麦会议属性|EMConferenceManagerDelegate#-conferenceAttributeUpdated:attributes: |EMConferenceListener#onAttributesUpdated(attributes);| | ||
- | |3.主播向发起抢麦请求|AppServer API|| | + | |3.主播向AppServer发起抢麦请求|%%AppServer API%%|| |
- | |4.返回抢麦成功结果|AppServer API|| | + | |4.返回抢麦成功结果|%%AppServer API%%|| |
- | |5.主播改变会议属性|EMClient.sharedClient.conferenceManager setConferenceAttribute: value: completion: |EMClient.getInstance().conferenceManager().setConferenceAttribute(key, value, callback);| | + | |5.主播改变会议属性|[[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);]]| |
|6.广播会议属性|EMConferenceManagerDelegate#-conferenceAttributeUpdated:attributes: |EMConferenceListener#onAttributesUpdated(attributes);| | |6.广播会议属性|EMConferenceManagerDelegate#-conferenceAttributeUpdated:attributes: |EMConferenceListener#onAttributesUpdated(attributes);| | ||
- | |7.抢麦者说话,其他人闭麦|EMClient.sharedClient.conferenceManager updateConference: isMute: |EMClient.getInstance().conferenceManager().openVoiceTransfer();EMClient.getInstance().conferenceManager().closeVoiceTransfer();| | + | |7.抢麦者说话,其他人闭麦|[[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();]]| |
- | |8.释放麦,改变会议属性|EMClient.sharedClient.conferenceManager setConferenceAttribute: value: completion: |EMClient.getInstance().conferenceManager().setConferenceAttribute(key, value, callback);| | + | |8.释放麦,改变会议属性|[[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);]]| |
|9.广播会议属性|EMConferenceManagerDelegate#-conferenceAttributeUpdated:attributes: |EMConferenceListener#onAttributesUpdated(attributes);| | |9.广播会议属性|EMConferenceManagerDelegate#-conferenceAttributeUpdated:attributes: |EMConferenceListener#onAttributesUpdated(attributes);| | ||
基于语音聊天室的抢麦玩法,不止音遇这一种玩法,还有更多想象的空间,开发者可基于环信解决方案衍生出更多玩法。 | 基于语音聊天室的抢麦玩法,不止音遇这一种玩法,还有更多想象的空间,开发者可基于环信解决方案衍生出更多玩法。 | ||
+ | |||
+ | |||
+ | ---- | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | 上一页:[[im:other:integrationcases:host|主持模式]] | ||
+ | </WRAP> | ||
+ | |||
+ | <WRAP half column> | ||
+ | 下一页:[[im:other:integrationcases:usersandfriends|已上线的应用导入到环信]] | ||
+ | </WRAP> | ||
+ | </WRAP> |