setDrmCallback method

Future<void> setDrmCallback(
  1. dynamic requestProvision(
    1. Object,
    2. Object
    ),
  2. dynamic requestKey(
    1. Object,
    2. Object
    )
)

设置加载url的hash值回调。如果不设置,SDK使用md5算法。

Implementation

Future<void> setDrmCallback(Function(Object, Object) requestProvision,
    Function(Object, Object) requestKey) async {
  BasicMessageChannel<String> _basicMessageChannel =
  BasicMessageChannel<String>(
    "requestProvision",
    StringCodec(),
  );
  BasicMessageChannel<String> _basicMessageChannel2 =
  BasicMessageChannel<String>(
    "requestKey",
    StringCodec(),
  );
  // 注册调用 Flutter 端的 callback, 并发送至 Native 端
  _basicMessageChannel.setMessageHandler((message) async {
    if (message != null) {
      Map<String, dynamic> parsedArguments = jsonDecode(message);
      Object object1 = parsedArguments["param1"];
      Object object2 = parsedArguments["param2"];
      String result = requestProvision(object1, object2);
      // 处理接收到的消息
      return result; // 返回结果给 Native
    }
    return "";
  });

  _basicMessageChannel2.setMessageHandler((message) async {
    if (message != null) {
      Map<String, dynamic> parsedArguments = jsonDecode(message);
      Object object1 = parsedArguments["param1"];
      Object object2 = parsedArguments["param2"];
      String result = requestKey(object1, object2);
      // 处理接收到的消息
      return result; // 返回结果给 Native
    }
    return "";
  });

  try {
    await FlutterAliPlayerFactory.methodChannel
        .invokeMethod('setDrmCallback');
  } on PlatformException catch (e) {
    print("Failed to register callback: '${e.message}'.");
  }
}