Flutter广告集成插件flutter_ad_gromore的使用

Flutter广告集成插件flutter_ad_gromore的使用

集成穿山甲,Gromore广告聚合,6.1.2.5 版本

这是一个新的Flutter插件项目,专注于包含Android和/或iOS平台特定实现代码的专用包。

开始使用

安装插件

首先,在你的 pubspec.yaml 文件中添加插件依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_ad_gromore: ^6.1.2.5

然后运行 flutter pub get 来安装该插件。

初始化插件

在项目的 main.dart 文件中初始化插件。以下是一个完整的示例:

/*
 * @Author: lipeng 1162423147@qq.com
 * @Date: 2024-06-01 09:36:40
 * @LastEditors: lipeng 1162423147@qq.com
 * @LastEditTime: 2024-06-06 21:43:11
 * @FilePath: /flutterad/example/lib/main.dart
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:flutter_ad_gromore/flutterad.dart';

import 'ad/home.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = '未知';
  final _flutteradPlugin = Flutterad();

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

  // 平台消息是异步的,因此我们在异步方法中进行初始化。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能会失败,所以我们使用try/catch来捕获PlatformException。
    // 我们还处理消息可能返回null的情况。
    try {
      platformVersion = await _flutteradPlugin.getPlatformVersion() ?? '未知平台版本';
    } on PlatformException {
      platformVersion = '获取平台版本失败。';
    }

    // 如果小部件从树中被移除而异步平台消息还在飞行中,我们希望丢弃回复而不是调用setState来更新我们的不存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: HomePage(),
      ),
    );
  }
}

显示广告

接下来,你需要在你的应用中显示广告。这通常通过创建一个专门的广告页面来完成。以下是一个简单的广告页面示例:

// ad/home.dart
import 'package:flutter/material.dart';
import 'package:flutter_ad_gromore/flutterad.dart';

class HomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        onPressed: () {
          // 在这里展示广告
          _showAd(context);
        },
        child: Text('展示广告'),
      ),
    );
  }

  Future<void> _showAd(BuildContext context) async {
    try {
      // 调用广告插件的方法来展示广告
      await Flutterad().showInterstitialAd();
    } catch (e) {
      print("展示广告时发生错误: $e");
    }
  }
}

更多关于Flutter广告集成插件flutter_ad_gromore的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告集成插件flutter_ad_gromore的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_ad_gromore 是一个用于在 Flutter 应用中集成 Gromore 广告的插件。Gromore 是一个广告聚合平台,支持多种广告形式,如开屏广告、Banner 广告、插屏广告、激励视频广告等。以下是如何在 Flutter 项目中使用 flutter_ad_gromore 插件的详细步骤。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_ad_gromore: ^latest_version

然后运行 flutter pub get 来安装依赖。

2. 配置 Android 和 iOS 项目

Android 配置

android/app/build.gradle 文件中,确保 minSdkVersion 至少为 16,并且添加以下配置:

android {
    ...
    defaultConfig {
        ...
        minSdkVersion 16
        ...
    }
    ...
}

AndroidManifest.xml 文件中添加必要的权限和 Gromore 的配置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:name=".MyApplication"
        ...>
        <meta-data
            android:name="com.gromore.sdk.appid"
            android:value="YOUR_GROMORE_APP_ID" />
        ...
    </application>
</manifest>

iOS 配置

ios/Podfile 文件中,确保你使用的是 iOS 10.0 或更高版本:

platform :ios, '10.0'

Info.plist 文件中添加必要的权限和 Gromore 的配置:

<key>GromoreAppID</key>
<string>YOUR_GROMORE_APP_ID</string>

3. 初始化插件

在 Dart 代码中初始化 flutter_ad_gromore 插件。通常,你可以在 main.dart 文件中进行初始化。

import 'package:flutter_ad_gromore/flutter_ad_gromore.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await FlutterAdGromore.init('YOUR_GROMORE_APP_ID');
  runApp(MyApp());
}

4. 加载和显示广告

flutter_ad_gromore 插件支持多种广告形式,以下是一些常见的广告类型的示例。

开屏广告

import 'package:flutter_ad_gromore/flutter_ad_gromore.dart';

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

class _SplashAdExampleState extends State<SplashAdExample> {
  FlutterAdGromoreSplashAd? _splashAd;

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

  void _loadSplashAd() {
    _splashAd = FlutterAdGromoreSplashAd(
      adUnitId: 'YOUR_SPLASH_AD_UNIT_ID',
      onAdLoaded: () {
        print('Splash Ad Loaded');
      },
      onAdShow: () {
        print('Splash Ad Shown');
      },
      onAdClick: () {
        print('Splash Ad Clicked');
      },
      onAdDismiss: () {
        print('Splash Ad Dismissed');
      },
      onAdError: (error) {
        print('Splash Ad Error: $error');
      },
    );
    _splashAd?.loadAd();
  }

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

Banner 广告

import 'package:flutter_ad_gromore/flutter_ad_gromore.dart';

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

class _BannerAdExampleState extends State<BannerAdExample> {
  FlutterAdGromoreBannerAd? _bannerAd;

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

  void _loadBannerAd() {
    _bannerAd = FlutterAdGromoreBannerAd(
      adUnitId: 'YOUR_BANNER_AD_UNIT_ID',
      onAdLoaded: () {
        print('Banner Ad Loaded');
      },
      onAdShow: () {
        print('Banner Ad Shown');
      },
      onAdClick: () {
        print('Banner Ad Clicked');
      },
      onAdError: (error) {
        print('Banner Ad Error: $error');
      },
    );
    _bannerAd?.loadAd();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Banner Ad Example'),
      ),
      body: Center(
        child: _bannerAd != null
            ? AdWidget(ad: _bannerAd!)
            : Text('Loading Banner Ad...'),
      ),
    );
  }
}

激励视频广告

import 'package:flutter_ad_gromore/flutter_ad_gromore.dart';

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

class _RewardAdExampleState extends State<RewardAdExample> {
  FlutterAdGromoreRewardAd? _rewardAd;

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

  void _loadRewardAd() {
    _rewardAd = FlutterAdGromoreRewardAd(
      adUnitId: 'YOUR_REWARD_AD_UNIT_ID',
      onAdLoaded: () {
        print('Reward Ad Loaded');
      },
      onAdShow: () {
        print('Reward Ad Shown');
      },
      onAdClick: () {
        print('Reward Ad Clicked');
      },
      onAdReward: () {
        print('Reward Ad Reward');
      },
      onAdError: (error) {
        print('Reward Ad Error: $error');
      },
    );
    _rewardAd?.loadAd();
  }

  void _showRewardAd() {
    _rewardAd?.showAd();
  }

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

5. 处理生命周期

确保在页面销毁时释放广告资源,以避免内存泄漏。

[@override](/user/override)
void dispose() {
  _splashAd?.dispose();
  _bannerAd?.dispose();
  _rewardAd?.dispose();
  super.dispose();
}
回到顶部