ARTC SDK提供自定义消息的发送和接收能力,实现在传输音视频数据的同时再发送自定义的实时消息数据。本文介绍自定义消息发送和接收的实现原理和示例代码。
实现原理
主播角色可以发送和接收消息,观众角色仅支持接收消息。
示例代码
开启自定义消息通道
说明
默认不开启,必须通过如下接口开启自定义消息通道。
该接口在创建引擎后,入会前和入会后都可以调用。
Android示例代码:
param = "{\"data\":{\"enablePubDataChannel\":true" + ",\"enableSubDataChannel\":true}}"; mAliRtcEngine.setParameter(param);
iOS示例代码:
NSString* parameter = [NSString stringWithFormat:@"{\"data\":{\"enablePubDataChannel\":true,\"enableSubDataChannel\":true}}"]; [self.engine setParameter:parameter];
Windows示例代码
char * param = "{\"data\":{\"enablePubDataChannel\":true,\"enableSubDataChannel\":true}}"; mAliRtcEngine->SetParameter(param);
Linux示例代码
Java相关示例代码请参见Java快速接入>消息收发。
C++相关示例代码请参见C++快速接入>消息通讯。
Python相关示例代码请参见Python快速接入>消息通讯。
发送自定义消息
Android示例代码:
AliRtcEngine.AliRtcDataChannelMsg msg = new AliRtcEngine.AliRtcDataChannelMsg(); msg.type = AliRtcEngine.AliRtcDataMsgType.AliEngineDataMsgCustom; /* data可以是任意数据(文字、图片等) */ msg.data = xxxx; mAliRtcEngine.sendDataChannelMsg(msg);
iOS示例代码:
AliRtcDataChannelMsg* msg = [[AliRtcDataChannelMsg alloc] init]; msg.type = AliRtcDataMsgCustom; /* data可以是任意数据(文字、图片等) */ msg.data = xxxxx; [self.engine sendDataChannelMessage:msg];
Windows示例代码:
AliEngineDataChannelMsg msg; msg.type = AliEngineDataChannelCustom; /* data可以是任意数据(文字、图片等) */ msg.data = data; msg.dataLen = dataLength; mAliRtcEngine->SendDataChannelMessage(msg);
Linux示例代码
Java相关示例代码请参见Java快速接入>消息收发。
C++相关示例代码请参见C++快速接入>消息通讯。
Python相关示例代码请参见Python快速接入>消息通讯。
接收自定义消息
通过监听回调接收自定义的消息。
Android示例代码:
//在AliRtcEngineNotify回调中 public void onDataChannelMessage(String uid, AliRtcEngine.AliRtcDataChannelMsg msg) { /* TODO:编写自定义消息的处理 */ }
iOS示例代码:
- (void)onDataChannelMessage:(NSString *_Nonnull)uid controlMsg:(AliRtcDataChannelMsg*_Nonnull)controlMsg { /* TODO:编写自定义消息的处理 */ }
Windows示例代码:
public: virtual void OnDataChannelMessage(const char* uid, const AliEngineDataChannelMsg& msg) override { /* TODO:编写自定义消息的处理 */ }
Linux示例代码
Java相关示例代码请参见Java快速接入>消息收发。
C++相关示例代码请参见C++快速接入>消息通讯。
Python相关示例代码请参见Python快速接入>消息通讯。
文档内容是否对您有帮助?