144 lines
5.6 KiB
Dart
144 lines
5.6 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
import 'flutter_union_ad.dart';
|
|
|
|
/// @Description: dart类作用描述
|
|
const EventChannel tencentAdEventEvent =
|
|
EventChannel("com.example.union_ad_ssgf/adevent");
|
|
|
|
class FlutterUnionAdStream {
|
|
///
|
|
/// # 注册stream监听原生返回的信息
|
|
/// [rewardAdCallBack] 激励广告回调
|
|
/// [interactionAdCallBack] 插屏广告回调
|
|
///
|
|
static StreamSubscription initAdStream(
|
|
{FlutterUnionAdRewardCallBack? flutterTencentadRewardCallBack,
|
|
FlutterUnionAdInteractionCallBack? flutterTencentadInteractionCallBack}) {
|
|
StreamSubscription _adStream =
|
|
tencentAdEventEvent.receiveBroadcastStream().listen((data) {
|
|
switch (data[FlutterUnionAdCode.adType]) {
|
|
///激励广告
|
|
case FlutterUnionAdCode.rewardAd:
|
|
switch (data[FlutterTencentadMethod.onAdMethod]) {
|
|
case FlutterTencentadMethod.onShow:
|
|
if (flutterTencentadRewardCallBack?.onShow != null) {
|
|
flutterTencentadRewardCallBack?.onShow!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onClose:
|
|
if (flutterTencentadRewardCallBack?.onClose != null) {
|
|
flutterTencentadRewardCallBack?.onClose!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onFail:
|
|
if (flutterTencentadRewardCallBack?.onFail != null) {
|
|
flutterTencentadRewardCallBack?.onFail!(
|
|
data["code"], data["message"]);
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onClick:
|
|
if (flutterTencentadRewardCallBack?.onClick != null) {
|
|
flutterTencentadRewardCallBack?.onClick!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onVerify:
|
|
if (flutterTencentadRewardCallBack?.onVerify != null) {
|
|
flutterTencentadRewardCallBack?.onVerify!(
|
|
data["transId"], data["rewardName"], data["rewardAmount"]);
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onFinish:
|
|
if (flutterTencentadRewardCallBack?.onFinish != null) {
|
|
flutterTencentadRewardCallBack?.onFinish!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onReady:
|
|
if (flutterTencentadRewardCallBack?.onReady != null) {
|
|
flutterTencentadRewardCallBack?.onReady!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onUnReady:
|
|
if (flutterTencentadRewardCallBack?.onUnReady != null) {
|
|
flutterTencentadRewardCallBack?.onUnReady!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onExpose:
|
|
if (flutterTencentadRewardCallBack?.onExpose != null) {
|
|
flutterTencentadRewardCallBack?.onExpose!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onECPM:
|
|
if (flutterTencentadRewardCallBack?.onECPM != null) {
|
|
flutterTencentadRewardCallBack?.onECPM!(
|
|
data["ecpmLevel"], data["ecpm"]);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
|
|
///插屏广告
|
|
case FlutterUnionAdCode.interactAd:
|
|
switch (data[FlutterTencentadMethod.onAdMethod]) {
|
|
case FlutterTencentadMethod.onShow:
|
|
if (flutterTencentadInteractionCallBack?.onShow != null) {
|
|
flutterTencentadInteractionCallBack?.onShow!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onClose:
|
|
if (flutterTencentadInteractionCallBack?.onClose != null) {
|
|
flutterTencentadInteractionCallBack?.onClose!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onFail:
|
|
if (flutterTencentadInteractionCallBack?.onFail != null) {
|
|
flutterTencentadInteractionCallBack?.onFail!(
|
|
data["code"], data["message"]);
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onClick:
|
|
if (flutterTencentadInteractionCallBack?.onClick != null) {
|
|
flutterTencentadInteractionCallBack?.onClick!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onExpose:
|
|
if (flutterTencentadInteractionCallBack?.onExpose != null) {
|
|
flutterTencentadInteractionCallBack?.onExpose!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onReady:
|
|
if (flutterTencentadInteractionCallBack?.onReady != null) {
|
|
flutterTencentadInteractionCallBack?.onReady!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onUnReady:
|
|
if (flutterTencentadInteractionCallBack?.onUnReady != null) {
|
|
flutterTencentadInteractionCallBack?.onUnReady!();
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onVerify:
|
|
if (flutterTencentadInteractionCallBack?.onVerify != null) {
|
|
flutterTencentadInteractionCallBack?.onVerify!(
|
|
data["transId"], "", 0);
|
|
}
|
|
break;
|
|
case FlutterTencentadMethod.onECPM:
|
|
if (flutterTencentadInteractionCallBack?.onECPM != null) {
|
|
flutterTencentadInteractionCallBack?.onECPM!(
|
|
data["ecpmLevel"], data["ecpm"]);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
});
|
|
return _adStream;
|
|
}
|
|
|
|
static void deleteAdStream(StreamSubscription stream) {
|
|
stream.cancel();
|
|
}
|
|
}
|