yf_ads 0.0.2 copy "yf_ads: ^0.0.2" to clipboard
yf_ads: ^0.0.2 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(),
      ),
    ));
  }
}