
IM即时通讯
安全可靠、全球互通

实时音视频
流畅稳定、省钱省力
回答:
因为 onDataReceived 不属于 SDK 标准功能,所以新版本 SDK 不再提供此功能,开发者如需要使用可以参考旧版本 SDK 实现, 步骤如下:
1. 在 Dart 插件层定义 onDataReceived 方法
```
///收到原生数据的回调
///
///[data] 传递的数据内容
///
/// 如果传送的是push内容 建议在 main.dart 使用
static Function(Map? data)? onDataReceived;
```
2. 在 setMethodCallHandler 中处理channel回调
static void _addNativeMethodCallHandler() {
_channel.setMethodCallHandler(_methodCallHandler);
}
static Future<dynamic> _methodCallHandler(MethodCall call) async {
switch (call.method) {
case "SendDataToFlutterCallBack":
if (onDataReceived != null) {
Map? map = call.arguments;
onDataReceived!(map);
}
break;
}
}
```
3. ios/android 层调用方法。
```
// 可通过该接口向Flutter传递数据
public void sendDataToFlutter(final Map map) {
if (map == null) {
return;
}
RCLog.i("sendDataToFlutter start param:" + map.toString());
mMainHandler.post(new Runnable() {
@Override
public void run() {
mChannel.invokeMethod("SendDataToFlutterCallBack", map);
}
});
}
```
```
- (void)sendDataToFlutter:(NSDictionary *)userInfo {
NSString *LOG_TAG = @"sendDataToFlutter";
[RCLog i:[NSString stringWithFormat:@"%@,start param:%@",LOG_TAG,userInfo]];
[self.channel invokeMethod:@"SendDataToFlutterCallBack" arguments:userInfo];
}
```