Skip to content

Commit d785ee0

Browse files
committed
[]
1 parent 8751528 commit d785ee0

File tree

3 files changed

+58
-50
lines changed

3 files changed

+58
-50
lines changed

example/lib/index.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@ class _IndexState extends State<Index> {
1717
Center(
1818
child: ElevatedButton(
1919
onPressed: () async {
20-
Navigator.pushReplacement(
20+
Navigator.push(
2121
context,
2222
MaterialPageRoute(
2323
builder: (BuildContext context) => PangolinRewardAd(
2424
mCodeId: "945637758",
25+
userId: "user123",
2526
),
2627
),
2728
);

ios/Classes/RewardFactory.swift

+30-9
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class RewardView: NSObject, FlutterPlatformView, FlutterStreamHandler, BUNativeE
3434
private var flutterRegister: FlutterPluginRegistrar
3535
private var event: FlutterEventChannel
3636
private var eventSink: FlutterResult?
37+
private var rewardedAd: BUNativeExpressRewardedVideoAd
3738

3839
init(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?, binaryMessenger register: FlutterPluginRegistrar) {
3940
flutterRegister = register
@@ -44,28 +45,48 @@ class RewardView: NSObject, FlutterPlatformView, FlutterStreamHandler, BUNativeE
4445
}
4546
var codeId: String? = ""
4647
event = FlutterEventChannel(name: "com.tongyangsheng.pangolin/pangolinRewardAd_\(viewId)", binaryMessenger: register.messenger())
47-
if let args = args as? [String: Any] {
48-
codeId = args["mCodeId"] as? String
48+
let args = args as? [String: Any]
49+
if args != nil {
50+
codeId = args!["mCodeId"] as? String
4951
}
5052
rewardView = UIViewController()
53+
let model = BURewardedVideoModel()
54+
model.userId = (args!["userId"] as! String)
55+
print(args!["rewardName"] as Any)
56+
print("---------------------------")
57+
if ((args!["rewardName"] as? String) != nil) {
58+
model.rewardName = (args!["rewardName"] as! String)
59+
}
60+
if ((args!["extra"] as? String) != nil) {
61+
model.extra = (args!["extra"] as! String)
62+
}
63+
64+
if ((args!["rewardAmount"] as? Int) != nil) {
65+
model.rewardAmount = (args!["rewardAmount"] as! Int)
66+
}
67+
68+
rewardedAd = BUNativeExpressRewardedVideoAd(slotID: codeId!, rewardedVideoModel: model)
5169
super.init()
5270

5371
event.setStreamHandler(self)
54-
let model = BURewardedVideoModel()
55-
// model.userId = codeId
56-
// model.rewardName = rewardName
57-
// model.extra = mediaExtra
58-
59-
let rewardedAd = BUNativeExpressRewardedVideoAd(slotID: codeId!, rewardedVideoModel: model)
6072
rewardedAd.loadData()
6173
rewardedAd.delegate = self
62-
rewardedAd.show(fromRootViewController: rewardView)
74+
6375
}
6476

6577
func view() -> UIView {
6678
return rewardView.view
6779
}
6880

81+
func nativeExpressRewardedVideoAdDidDownLoadVideo(_ rewardedVideoAd: BUNativeExpressRewardedVideoAd) {
82+
rewardedAd.show(fromRootViewController: rewardView)
83+
}
84+
// 关闭
85+
func nativeExpressRewardedVideoAdDidClose(_ rewardedVideoAd: BUNativeExpressRewardedVideoAd) {
86+
eventSink?("onAdClose")
87+
rewardView.dismiss(animated: false)
88+
}
89+
6990

7091
func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
7192
self.eventSink = events

lib/src/pangolin_rewardAd.dart

+26-40
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,30 @@ part of pangolon;
22

33
const _pangolinRewardAd = 'com.tongyangsheng.pangolin/pangolinRewardAd';
44

5+
typedef void PangolinRewardAdOnAdClose();
6+
57
class PangolinRewardAd extends StatefulWidget {
68
final String mCodeId;
79

8-
/// 倒计时结束
9-
final PangolinSplashAdOnAdTimeOver? onAdTimeOver;
10+
final String userId;
1011

11-
/// 跳过倒计时
12-
final PangolinSplashAdOnAdSkip? onAdSkip;
12+
final String? rewardName;
1313

14-
/// 广告显示
15-
final PangolinSplashAdOnAdShow? onAdShow;
14+
final String? extra;
1615

17-
/// 点击广告
18-
final PangolinSplashAdOnAdClicked? onAdClicked;
16+
final int? rewardAmount;
1917

20-
/// 只要广告看不到都会触发 用于跳转页面
21-
// final PangolinSplashAdOnAdOver onAdOver;
18+
/// 点击关闭
19+
final PangolinRewardAdOnAdClose? onAdClose;
2220

2321
const PangolinRewardAd({
2422
Key? key,
2523
required this.mCodeId,
26-
// required this.onAdOver,
27-
this.onAdTimeOver,
28-
this.onAdSkip,
29-
this.onAdShow,
30-
this.onAdClicked,
24+
required this.userId,
25+
this.rewardName,
26+
this.extra,
27+
this.rewardAmount,
28+
this.onAdClose,
3129
}) : super(key: key);
3230

3331
@override
@@ -54,6 +52,10 @@ class _PangolinRewardAdState extends State<PangolinRewardAd> {
5452
Widget build(BuildContext context) {
5553
Map<String, dynamic> creationParams = {
5654
'mCodeId': widget.mCodeId,
55+
'userId': widget.userId,
56+
'extra': widget.extra,
57+
'rewardName': widget.rewardName,
58+
'rewardAmount': widget.rewardAmount,
5759
};
5860
return Container(
5961
height: double.infinity,
@@ -84,31 +86,15 @@ class _PangolinRewardAdState extends State<PangolinRewardAd> {
8486
Future<void> onPlatformViewCreated(int id) async {
8587
_event = EventChannel('${_pangolinRewardAd}_$id');
8688
_event!.receiveBroadcastStream().listen((dynamic data) {
87-
// switch (data.toString()) {
88-
// case 'onAdTimeOver':
89-
// {
90-
// widget.onAdTimeOver?.call();
91-
// widget.onAdOver.call();
92-
// }
93-
// break;
94-
// case 'onAdClicked':
95-
// {
96-
// widget.onAdClicked?.call();
97-
// widget.onAdOver.call();
98-
// }
99-
// break;
100-
// case 'onAdShow':
101-
// {
102-
// widget.onAdShow?.call();
103-
// }
104-
// break;
105-
// case 'onAdSkip':
106-
// {
107-
// widget.onAdSkip?.call();
108-
// widget.onAdOver.call();
109-
// }
110-
// break;
111-
// }
89+
print(data);
90+
switch (data.toString()) {
91+
case 'onAdClose':
92+
{
93+
widget.onAdClose?.call();
94+
Navigator.pop(context);
95+
}
96+
break;
97+
}
11298
});
11399
}
114100
}

0 commit comments

Comments
 (0)