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
更多关于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();
}
}