Flutter插件freestar_flutter_plugin的使用方法详解

Flutter插件freestar_flutter_plugin的使用方法详解

Freestar Flutter 插件是一个为希望在其 Flutter 应用中展示广告的发布商和应用开发者设计的 Flutter 插件包。

支持 Android 和 iOS 平台。

freestar_flutter_plugin开始使用

查看我们的集成指南,以了解如何在您的 Flutter 应用中展示 Freestar 中介广告。

其他平台

Freestar 广告中介在其他平台上的说明:

Flutter 注意事项

一个 Flutter 插件包 是一种专门包含针对 Android 和/或 iOS 的平台特定实现代码的包。

如需了解有关 Flutter 的更多信息,请参阅在线文档,其中包含教程、示例、移动开发指导以及完整的 API 参考。

完整示例代码

以下是使用 freestar_flutter_plugin 插件的完整示例代码。该示例展示了如何在 Flutter 应用中加载和显示不同类型的广告(横幅广告、MREC 横幅广告、小尺寸原生广告、中等尺寸原生广告、插屏广告和激励视频广告)。

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:ui';
import 'dart:async';
import 'dart:developer' as developer;
import 'package:freestar_flutter_plugin/freestar_flutter_plugin.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
      .then((_) {
    runApp(new MyApp());
  });
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp>
    implements InterstitialAdListener, RewardedAdListener, BannerAdListener, NativeAdListener {

  InterstitialAd _interstitialAd = new InterstitialAd();
  RewardedAd _rewardedAd = new RewardedAd();
  BannerAd _bannerAd = BannerAd.from(null, BannerAd.AD_SIZE_BANNER_320x50, null, false);
  MrecBannerAd _mrecBannerAd = MrecBannerAd.from(null, BannerAd.AD_SIZE_MREC_300x250, null, false);
  NativeAd _smallNativeAd = NativeAd.fromParams(null, NativeAd.NATIVE_TEMPLATE_SMALL, null, false);
  NativeAd _mediumNativeAd = NativeAd.fromParams(null, NativeAd.NATIVE_TEMPLATE_MEDIUM, null, false);

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    developer.log('fsfp_tag: before plugin init', name: 'main.dart');
    try {
      FreestarFlutterPlugin.enableLogging(true);
      FreestarFlutterPlugin.enableTestMode(true);
      FreestarFlutterPlugin.enablePartnerChooser(true);
    } on PlatformException {}

    if (defaultTargetPlatform == TargetPlatform.android) {
      FreestarFlutterPlugin.init("XqjhRR"); // android key
    } else if (defaultTargetPlatform == TargetPlatform.iOS) {
      FreestarFlutterPlugin.init("XqjhRR"); // ios key can be different
    }
  }

  void _loadBannerAd() {
    print("fsfp_tag: BannerAdButton.dart. loadAd.");
    _bannerAd.bannerAdListener = this;
    //_bannerAd.placement = "optional-placement";
    _bannerAd.loadAd();
  }

  void _loadMRECBannerAd() {
    _mrecBannerAd.bannerAdListener = this;
    //_mrecBannerAd.placement = "optional-placement";
    _mrecBannerAd.loadAd();
  }

  void _loadSmallNativeAd() {
    _smallNativeAd.nativeAdListener = this;
    //_smallNativeAd.placement = "optional-placement";
    _smallNativeAd.loadAd();
  }

  void _loadMediumNativeAd() {
    _mediumNativeAd.nativeAdListener = this;
    //_mediumNativeAd.placement = "optional-placement";
    _mediumNativeAd.loadAd();
  }

  void _loadInterstitialAd() {
    _interstitialAd.interstitialAdListener = this;
    //_interstitialAd.placement = "optional-placement";
    _interstitialAd.loadAd();
  }

  void _loadRewardedAd() {
    _rewardedAd.rewardedAdListener = this;
    //_rewardedAd.placement = "optional-placement";
    Map targetingParams = Map();
    targetingParams["my-targeting-param1"] = "example value 1";
    targetingParams["my-targeting-param2"] = "example value 2";
    _rewardedAd.targetingParams = targetingParams; // optional
    _rewardedAd.loadAd();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: SingleChildScrollView(
            child: Container(
              margin: const EdgeInsets.only(top: 40.0),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                children: [
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    children: [
                      TextButton(
                        onPressed: _loadBannerAd,
                        child: Text('BANNER'),
                      ),
                      TextButton(
                        onPressed: _loadMRECBannerAd,
                        child: Text('MREC'),
                      ),
                      TextButton(
                        onPressed: _loadSmallNativeAd,
                        child: Text('SM-NATIVE'),
                      ),
                      TextButton(
                        onPressed: _loadMediumNativeAd,
                        child: Text('MED-NATIVE'),
                      ),
                    ],
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    children: [
                      TextButton(
                        onPressed: _loadInterstitialAd,
                        child: Text('INTERSTITIAL'),
                      ),
                      TextButton(
                        onPressed: _loadRewardedAd,
                        child: Text('REWARDED'),
                      ),
                    ],
                  ),
                  Text('Banner Ad Below'),
                  Container(
                      margin: const EdgeInsets.only(top: 16.0),
                      width: 320.0,
                      height: 50.0,
                      child: _bannerAd),
                  Text('MREC Banner Ad Below'),
                  Container(
                      margin: const EdgeInsets.only(top: 16.0),
                      width: 300.0,
                      height: 250.0,
                      child: _mrecBannerAd),
                  Text('Small Native Ad Below'),
                  Container(
                      margin: const EdgeInsets.only(top: 16.0),
                      width: window.physicalSize.width,
                      height: 100.0,
                      child: _smallNativeAd),
                  Text('Medium Native Ad Below'),
                  Container(
                      margin: const EdgeInsets.only(top: 16.0),
                      width: window.physicalSize.width,
                      height: 350.0,
                      child: _mediumNativeAd),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }

  String _notNull(String? str) {
    if (str == null)
      return "";
    else
      return str;
  }

  [@override](/user/override)
  void onInterstitialAdShown(String? placement) {
    print("fsfp_tag: main.dart. onInterstitialAdShown. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onInterstitialAdDismissed(String? placement) {
    print("fsfp_tag: main.dart. onInterstitialAdDismissed. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onInterstitialAdClicked(String? placement) {
    print("fsfp_tag: main.dart. onInterstitialAdClicked. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onInterstitialAdFailed(String? placement, String errorMessage) {
    print("fsfp_tag: main.dart. onInterstitialAdFailed. placement: [" +
        _notNull(placement) + "] error: " + errorMessage);
  }

  [@override](/user/override)
  void onInterstitialAdLoaded(String? placement) {
    print("fsfp_tag: main.dart. onInterstitialAdLoaded. placement: [" +
        _notNull(placement) + "]");
    _interstitialAd.showAd();
  }

  [@override](/user/override)
  void onRewardedAdCompleted(String? placement) {
    print("fsfp_tag: main.dart. onRewardedAdCompleted. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onRewardedAdDismissed(String? placement) {
    print("fsfp_tag: main.dart. onRewardedAdDismissed. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onRewardedAdShownError(String? placement, String errorMessage) {
    print("fsfp_tag: main.dart. onRewardedAdShownError. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onRewardedAdShown(String? placement) {
    print("fsfp_tag: main.dart. onRewardedAdShown. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onRewardedAdFailed(String? placement, String errorMessage) {
    print("fsfp_tag: main.dart. onRewardedAdFailed. placement: [" +
        _notNull(placement) + "]  error: " + errorMessage);
  }

  [@override](/user/override)
  void onRewardedAdLoaded(String? placement) {
    print("fsfp_tag: main.dart. onRewardedAdLoaded. placement: [" +
        _notNull(placement) + "]");
    _rewardedAd.showAd("secret-12345", "myUserId765", "V-Bucks", "9000");
  }

  [@override](/user/override)
  void onBannerAdClicked(String? placement) {
    print("fsfp_tag: main.dart. onBannerAdClicked. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onBannerAdFailed(String? placement, String errorMessage) {
    print("fsfp_tag: main.dart. onBannerAdFailed. placement: [" +
        _notNull(placement) + "]  error: " + errorMessage);
  }

  [@override](/user/override)
  void onBannerAdLoaded(String? placement) {
    print("fsfp_tag: main.dart. onBannerAdLoaded. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onNativeAdClicked(String? placement) {
    print("fsfp_tag: main.dart. onNativeAdClicked. placement: [" +
        _notNull(placement) + "]");
  }

  [@override](/user/override)
  void onNativeAdFailed(String? placement, String errorMessage) {
    print("fsfp_tag: main.dart. onNativeAdFailed. placement: [" +
        _notNull(placement) + "]  error: " + errorMessage);
  }

  [@override](/user/override)
  void onNativeAdLoaded(String? placement) {
    print("fsfp_tag: main.dart. onNativeAdLoaded. placement: [" +
        _notNull(placement) + "]");
  }
}

更多关于Flutter插件freestar_flutter_plugin的使用方法详解的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件freestar_flutter_plugin的使用方法详解的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


freestar_flutter_plugin 是一个用于在 Flutter 应用中集成广告的插件,通常用于展示横幅广告、插页式广告、激励视频广告等。虽然这个插件可能不像 Google 的 firebase_admob 那样广为人知,但它仍然是一个强大的工具,可以帮助开发者在应用中实现广告收入。

以下是如何在 Flutter 项目中使用 freestar_flutter_plugin 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 freestar_flutter_plugin 的依赖。

dependencies:
  flutter:
    sdk: flutter
  freestar_flutter_plugin: ^版本号

请替换 ^版本号 为最新的插件版本号。你可以通过 pub.dev 查找最新版本。

2. 获取 API Key

在使用 freestar_flutter_plugin 之前,你需要在 Freestar 注册并获取 API Key。

3. 初始化插件

在你的 Flutter 应用中初始化 freestar_flutter_plugin。通常,你可以在 main.dart 文件中进行初始化。

import 'package:freestar_flutter_plugin/freestar_flutter_plugin.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await FreestarFlutterPlugin.initialize('your_api_key_here');
  runApp(MyApp());
}

4. 展示广告

freestar_flutter_plugin 支持多种广告类型,如横幅广告、插页式广告、激励视频广告等。以下是一些常见广告类型的示例:

横幅广告

import 'package:flutter/material.dart';
import 'package:freestar_flutter_plugin/freestar_flutter_plugin.dart';

class BannerAdExample extends StatefulWidget {
  [@override](/user/override)
  _BannerAdExampleState createState() => _BannerAdExampleState();
}

class _BannerAdExampleState extends State<BannerAdExample> {
  late FreestarBannerAd _bannerAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _bannerAd = FreestarBannerAd(
      adUnitId: 'your_ad_unit_id_here',
      adSize: FreestarBannerAdSize.BANNER,
      listener: (FreestarBannerAdEvent event, Map<String, dynamic>? args) {
        print("Banner Ad event: $event");
      },
    );
    _bannerAd.load();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Banner Ad Example'),
      ),
      body: Center(
        child: _bannerAd,
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _bannerAd.dispose();
    super.dispose();
  }
}

插页式广告

import 'package:flutter/material.dart';
import 'package:freestar_flutter_plugin/freestar_flutter_plugin.dart';

class InterstitialAdExample extends StatefulWidget {
  [@override](/user/override)
  _InterstitialAdExampleState createState() => _InterstitialAdExampleState();
}

class _InterstitialAdExampleState extends State<InterstitialAdExample> {
  late FreestarInterstitialAd _interstitialAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _interstitialAd = FreestarInterstitialAd(
      adUnitId: 'your_ad_unit_id_here',
      listener: (FreestarInterstitialAdEvent event, Map<String, dynamic>? args) {
        print("Interstitial Ad event: $event");
        if (event == FreestarInterstitialAdEvent.closed) {
          // 广告关闭后重新加载
          _interstitialAd.load();
        }
      },
    );
    _interstitialAd.load();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Interstitial Ad Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            if (_interstitialAd.isLoaded) {
              _interstitialAd.show();
            }
          },
          child: Text('Show Interstitial Ad'),
        ),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _interstitialAd.dispose();
    super.dispose();
  }
}

激励视频广告

import 'package:flutter/material.dart';
import 'package:freestar_flutter_plugin/freestar_flutter_plugin.dart';

class RewardedAdExample extends StatefulWidget {
  [@override](/user/override)
  _RewardedAdExampleState createState() => _RewardedAdExampleState();
}

class _RewardedAdExampleState extends State<RewardedAdExample> {
  late FreestarRewardedAd _rewardedAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _rewardedAd = FreestarRewardedAd(
      adUnitId: 'your_ad_unit_id_here',
      listener: (FreestarRewardedAdEvent event, Map<String, dynamic>? args) {
        print("Rewarded Ad event: $event");
        if (event == FreestarRewardedAdEvent.closed) {
          // 广告关闭后重新加载
          _rewardedAd.load();
        } else if (event == FreestarRewardedAdEvent.rewarded) {
          // 用户获得奖励
          print("User earned reward: ${args?['amount']} ${args?['type']}");
        }
      },
    );
    _rewardedAd.load();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Rewarded Ad Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            if (_rewardedAd.isLoaded) {
              _rewardedAd.show();
            }
          },
          child: Text('Show Rewarded Ad'),
        ),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _rewardedAd.dispose();
    super.dispose();
  }
}
回到顶部