yf_ads 0.0.5
yf_ads: ^0.0.5 copied to clipboard
A new Flutter ads project.
example/lib/main.dart
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:yf_ads/callbacks/yf_ads_callback.dart';
import 'package:yf_ads/yf_ads.dart';
import 'package:yf_ads/bean/yf_ads_init_sdk_android_bean.dart';
import 'package:yf_ads/bean/yf_ads_init_sdk_ios_bean.dart';
import 'package:yf_ads/bean/yf_ads_interaction_bean.dart';
import 'package:yf_ads/bean/yf_ads_reward_video_bean.dart';
import 'package:yf_ads/bean/yf_ads_splash_bean.dart';
import 'package:yf_ads/callbacks/yf_ads_reward_video_callback.dart';
import 'yf_ads_request_banner_list_view.dart';
import 'yf_ads_request_banner_view.dart';
import 'yf_ads_request_express_feed_list_view.dart';
import 'yf_ads_request_express_feed_view.dart';
import 'yf_ads_request_native_draw_feed_video_view.dart';
import 'yf_ads_request_stream_view.dart';
import 'yf_ads_reward_video_extra_bean.dart';
void main() {
runApp(const MaterialApp(
debugShowCheckedModeBanner: false,
home: MyApp(),
));
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
var reaperFlutterPlugin;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
reaperFlutterPlugin = YFAds.instance;
initReaperSdk();
showSplashAd();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
if (state == AppLifecycleState.resumed) {
print("切换到了前台");
} else if (state == AppLifecycleState.paused) {
print("切换到了后台");
}
}
@override
void dispose() {
print("dispose");
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
Future<void> initReaperSdk() async {
var reaperInitSdkBaseBean;
if (Platform.isAndroid) {
const RELEASE_APP_ID = "24f8e0ba-697e-4ee5-b4fb-30cc1c9f2031";
const RELEASE_APP_KEY = "24f8e0ba-697e-4ee5-b4fb-30cc1c9f2031";
reaperInitSdkBaseBean = const YFAdsInitSDKAndroidBean(
appId: RELEASE_APP_ID, appKey: RELEASE_APP_KEY, enableLog: true);
} else if (Platform.isIOS) {
const RELEASE_APP_ID = "b23c5c5c7ebd4dff9cf51ee9ee15aa77";
const RELEASE_APP_KEY = "b23c5c5c7ebd4dff9cf51ee9ee15aa77";
reaperInitSdkBaseBean =
const YFAdsInitSDKIOSBean(appId: RELEASE_APP_ID, appKey: RELEASE_APP_KEY);
}
await reaperFlutterPlugin.initAdsSDK(reaperInitSdkBaseBean);
}
Future<void> showSplashAd() async {
var reaperSplashBean;
var positionId;
if (Platform.isAndroid) {
positionId = "da54a0c6-62b0-4756-a975-a1bd122b4d61";
// jd
// positionId = "3eb91757-1163-4d84-a277-ff85a3b057ae";
} else if (Platform.isIOS) {
positionId = "5212de4238344338913289d4358f3e45";
}
reaperSplashBean = YFAdsSplashBean(positionId: positionId);
await reaperFlutterPlugin.loadSplashAd(reaperSplashBean);
}
Future<void> showInsertAd() async {
var positionId;
if (Platform.isAndroid) {
positionId = "503e92d8-2e2a-472c-b045-0f0f0282830c";
// jd
// positionId = "80e5f2ea-130e-4b20-b0c6-42fe517487c6";
} else if (Platform.isIOS) {
positionId = "ae1caa917bbf483aad9127b613668cac";
}
var reaperInsertBean = YFAdsInteractionBean(
positionId: positionId, callBack: insertAdCallBack);
await reaperFlutterPlugin.loadInteractionAd(reaperInsertBean);
}
void insertAdCallBack(YFAdsCallBack data) {
print("insertAdCallBack:${data.method!}");
}
Future<void> showRewardVideoAd() async {
var reaperRewardVideoBean;
var positionId;
if (Platform.isAndroid) {
positionId = "e46b3594-f3db-4f8d-b602-ec429bb37fd2";
} else if (Platform.isIOS) {
positionId = "c1d463494c01418e8a31e36398f37a82";
}
///object will send to your server to verify reward
///adCode means position id which will be replaced with real position id in reaper sdk,and should be fixed with %%POS_ID%%
///adSrc means ad source which will be replaced with real ad source in reaper sdk,and should be fixed with %%AD_SRC%%
///other parameters can be defined dynamic by yourself.
var reaperRewardVideoExtraBean = const YFAdsRewardVideoExtraBean(
uid: "1156642",
rewardVideoType: 2,
taskId: "70",
taskAction: "rewardVideo4energy",
version: "3.42.0_debug",
adCode: "%%POS_ID%%",
adSrc: "%%AD_SRC%%",
orientation: 1);
var extra = jsonEncode(reaperRewardVideoExtraBean);
reaperRewardVideoBean = YFAdsRewardVideoBean(
positionId: positionId, extra: extra, callBack: rewardVideoAdCallBack);
await reaperFlutterPlugin.loadRewardVideoAd(reaperRewardVideoBean);
}
void rewardVideoAdCallBack(
YFAdsRewardVideoCallBack reaperRewardVideoAdCallBack) {
print("rewardVideoAdCallBack:" + reaperRewardVideoAdCallBack.method!);
if (reaperRewardVideoAdCallBack.method ==
YFAdsRewardVideoCallBack.YF_ADS_ON_REWARD_VERIFY) {
print(
"rewardVideoAdCallBack "
"rewardName is ${reaperRewardVideoAdCallBack.rewardName},"
"rewardVerify is ${reaperRewardVideoAdCallBack.rewardVerify}");
}
}
void showBannerView(BuildContext context) {
print("banner view button clicked");
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => YFAdsBannerViewDemo()),
);
}
void showBannerListView(BuildContext context) {
print("banner list view button clicked");
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => YFAdsBannerListViewDemo()),
);
}
void showExpressFeedView(BuildContext context) {
print("express feed view button clicked");
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => YFAdsExpressFeedViewDemo()),
);
}
void showExpressFeedListView(BuildContext context) {
print("express feed list view button clicked");
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => ExpressFeedListViewDemo()),
);
}
void showNativeDrawFeedVideoView(BuildContext context) {
print("native draw feed video view button clicked");
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => YFAdsNativeDrawFeedVideoViewDemo()),
);
}
void showStreamView(BuildContext context) {
print("stream view button clicked");
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => YFAdsStreamViewDemo()),
);
}
@override
Widget build(BuildContext context) {
Widget getAdSource() {
return Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ElevatedButton(
onPressed: showInsertAd,
child: const Text("展示插屏广告"),
),
ElevatedButton(
onPressed: showSplashAd,
child: const Text("展示开屏广告"),
),
ElevatedButton(
onPressed: showRewardVideoAd,
child: const Text("展示激励视频广告"),
),
ElevatedButton(
onPressed: () {
showBannerView(context);
},
child: const Text("展示Banner广告"),
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
showBannerListView(context);
},
child: const Text("展示Banner列表广告"),
),
ElevatedButton(
onPressed: () {
showExpressFeedView(context);
},
child: const Text("展示信息流广告"),
),
ElevatedButton(
onPressed: () {
showExpressFeedListView(context);
},
child: const Text("展示信息流列表广告"),
),
ElevatedButton(
onPressed: () {
showNativeDrawFeedVideoView(context);
},
child: const Text("展示Draw视频广告"),
),
ElevatedButton(
onPressed: () {
showStreamView(context);
},
child: const Text("贴片广告"),
),
]),
],
),
));
}
return MaterialApp(
home: Scaffold(
body: Center(
child: getAdSource(),
),
));
}
}