Flutter广告集成插件mintegralad的使用

发布于 1周前 作者 yuanlaile 来自 Flutter

Flutter广告集成插件mintegralad的使用

Mintegral广告 Flutter版本

mintegralad

官方文档

版本更新

更新日志

本地开发环境

[✓] Flutter (Channel stable, 3.0.4, on macOS 12.5 21G72 darwin-x64, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc1)
[✓] Xcode - develop for iOS and macOS (Xcode 13.4.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2022.1.1)
[✓] VS Code (version 1.69.2)
[✓] Connected device (3 available)
[✓] HTTP Host Availability

集成步骤

1、pubspec.yaml

pubspec.yaml文件中添加依赖:

mintegralad: ^0.0.2

然后执行以下命令安装依赖:

flutter pub get

2、引入库

在代码中引入:

import 'package:mintegralad/mintegralad.dart';

使用

1、SDK初始化

在应用启动时调用Mintegralad.register方法进行初始化。

await Mintegralad.register(
    //androidId
    androidId: "153806",
    //iosId
    iosId: "153806",
    //androidAppKey
    androidAppKey: "5ed0c480e4182fc44b2cc3064a2b6b32",
    //iosAppKey
    iosAppKey: "5ed0c480e4182fc44b2cc3064a2b6b32",
    //是否显示日志log
    debug: true,
    //是否显示个性化推荐广告
    personalized: true,
);

2、获取SDK版本

调用Mintegralad.getSDKVersion获取当前SDK版本号:

await Mintegralad.getSDKVersion();

3、信息流广告

信息流广告是一种嵌入式广告形式,通常出现在内容流中。

MintegralAdNativeWidget(
    //android 广告版位ID
    androidId: "352221",
    //android 广告单元的ID
    androidUnitId: "1588294",
    //ios 广告版位ID
    iosId: "352221",
    //ios 广告单元的ID
    iosUnitId: "1588294",
    //广告宽
    width: 400,
    //广告高 加载成功后会自动修改为sdk返回广告高
    height: 100,
    //广告回调
    callBack: MintegralAdNativeCallBack(
      onShow: () {
        print("信息流广告显示");
      },
      onClose: () {
        print("信息流广告关闭");
      },
      onFail: (message) {
        print("信息流广告出错 $message");
      },
      onClick: () {
        print("信息流广告点击");
      },
    ),
),

4、横幅广告

横幅广告通常固定在屏幕顶部或底部。

MintegralAdBannerWidget(
    //android 广告版位ID
    androidId: "549920",
    //android 广告单元的ID
    androidUnitId: "1982590",
    //ios 广告版位ID
    iosId: "549920",
    //ios 广告单元的ID
    iosUnitId: "1982590",
    //广告宽
    width: 400,
    //广告高 加载成功后会自动修改为sdk返回广告高
    height: 100,
    //自动刷新时间(以秒为单位)设置在10s〜180s的范围内。
    refreshTime: 30,
    //广告回调
    callBack: MintegralAdBannerCallBack(
      onShow: () {
        print("横幅广告显示");
      },
      onClose: () {
        print("横幅广告关闭");
      },
      onFail: (message) {
        print("横幅广告出错 $message");
      },
      onClick: () {
        print("横幅广告点击");
      },
    ),
),

5、激励广告

激励广告是在用户完成某些操作后展示的广告,通常带有奖励机制。

预加载广告

await Mintegralad.loadRewardAd(
    //android 广告版位ID
    androidId: "351457",
    //android 广告单元的ID
    androidUnitId: "1589582",
    //ios 广告版位ID
    iosId: "351457",
    //ios 广告单元的ID
    iosUnitId: "1589582",
    //奖励id
    rewardId: "12",
    //用户id
    userId: "123",
);

显示广告

await Mintegralad.showRewardAd();

广告监听

通过MintegralAdStream监听广告状态:

MintegralAdStream.initAdStream(
    //激励广告
    rewardCallBack: MintegralAdRewardCallBack(
        onShow: () {
          print("激励广告显示");
        },
        onClick: () {
          print("激励广告点击");
        },
        onFail: (message) {
          print("激励广告失败 $message");
        },
        onClose: () {
          print("激励广告关闭");
        },
        onReady: () async {
          print("激励广告预加载准备就绪");
          await Mintegralad.showRewardAd();
        },
        onUnReady: () {
          print("激励广告预加载未准备就绪");
        },
        onVerify: (converted, rewardId,rewardName, rewardAmount) {
          print("激励广告奖励  是否完整播放=$converted  奖励id=$rewardId 奖励名称=$rewardName  奖励数量=$rewardAmount");
        },
    ),
);

示例代码

以下是完整的示例代码,展示了如何在Flutter中集成Mintegral广告插件。

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:mintegralad/mintegralad.dart';
import 'package:mintegralad_example/banner_page.dart';
import 'package:mintegralad_example/native_page.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

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

class _HomePageState extends State<HomePage> {
  bool _isRegister = false;
  String _sdkVersion = "";

  StreamSubscription? _adStream;

  [@override](/user/override)
  void initState() {
    super.initState();
    _register();
    _adStream = MintegralAdStream.initAdStream(
      //激励广告
      rewardCallBack: MintegralAdRewardCallBack(
        onShow: () {
          print("激励广告显示");
        },
        onClick: () {
          print("激励广告点击");
        },
        onFail: (message) {
          print("激励广告失败 $message");
        },
        onClose: () {
          print("激励广告关闭");
        },
        onReady: () async {
          print("激励广告预加载准备就绪");
          await Mintegralad.showRewardAd();
        },
        onUnReady: () {
          print("激励广告预加载未准备就绪");
        },
        onVerify: (converted, rewardId,rewardName, rewardAmount) {
          print("激励广告奖励  是否完整播放=$converted  奖励id=$rewardId 奖励名称=$rewardName  奖励数量=$rewardAmount");
        },
      ),
    );
  }

  ///初始化
  Future<void> _register() async {
    _isRegister = await Mintegralad.register(
      //androidId
      androidId: "153806",
      //iosId
      iosId: "153806",
      //androidAppKey
      androidAppKey: "5ed0c480e4182fc44b2cc3064a2b6b32",
      //iosAppKey
      iosAppKey: "5ed0c480e4182fc44b2cc3064a2b6b32",
      //是否显示日志log
      debug: true,
      //是否显示个性化推荐广告
      personalized: true,
    );
    print("初始化==》$_isRegister");
    _sdkVersion = await Mintegralad.getSDKVersion();
    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Mintegralad广告插件'),
      ),
      body: Center(
        child: Column(
          children: [
            Text('快手SDK初始化: $_isRegister\n'),
            Text('SDK版本: $_sdkVersion\n'),
            //激励广告
            MaterialButton(
              color: Colors.blue,
              textColor: Colors.white,
              child: const Text('激励广告'),
              onPressed: () async {
                await Mintegralad.loadRewardAd(
                  //android 广告版位ID
                  androidId: "351457",
                  //android 广告单元的ID
                  androidUnitId: "1589582",
                  //ios 广告版位ID
                  iosId: "351457",
                  //ios 广告单元的ID
                  iosUnitId: "1589582",
                  //奖励id
                  rewardId: "12",
                  //用户id
                  userId: "123",
                );
              },
            ),
            //横幅广告
            MaterialButton(
              color: Colors.blue,
              textColor: Colors.white,
              child: const Text('横幅广告'),
              onPressed: () async {
                Navigator.push(context, MaterialPageRoute(builder: (_) {
                  return const BannerPage();
                }));
              },
            ),
            //信息流广告
            MaterialButton(
              color: Colors.blue,
              textColor: Colors.white,
              child: const Text('信息流广告'),
              onPressed: () async {
                Navigator.push(context, MaterialPageRoute(builder: (_) {
                  return const NativePage();
                }));
              },
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


mintegralad 是一个用于在 Flutter 应用中集成 Mintegral 广告的插件。Mintegral 是一个全球移动广告平台,提供了多种广告形式,包括横幅广告、插屏广告、激励视频广告等。通过 mintegralad 插件,你可以轻松地将这些广告集成到你的 Flutter 应用中。

以下是如何使用 mintegralad 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  mintegralad: ^1.0.0  # 请确保使用最新版本

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

2. 初始化 Mintegral SDK

在使用 Mintegral 广告之前,你需要初始化 Mintegral SDK。通常,你可以在应用的 main.dart 文件中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Mintegral SDK
  await MintegralAd.initialize(
    appId: 'your_app_id',
    appKey: 'your_app_key',
  );
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

3. 加载和显示广告

Mintegral 提供了多种广告形式,以下是几种常见广告的加载和显示方法。

3.1 横幅广告

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

class _HomeScreenState extends State<HomeScreen> {
  BannerAd? _bannerAd;

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

  void _loadBannerAd() {
    _bannerAd = BannerAd(
      unitId: 'your_banner_ad_unit_id',
      listener: BannerAdListener(
        onAdLoaded: (ad) {
          print('Banner Ad loaded.');
        },
        onAdFailedToLoad: (ad, error) {
          print('Banner Ad failed to load: $error');
        },
      ),
    );
    _bannerAd?.load();
  }

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

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

3.2 插屏广告

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

class _HomeScreenState extends State<HomeScreen> {
  InterstitialAd? _interstitialAd;

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

  void _loadInterstitialAd() {
    InterstitialAd.load(
      unitId: 'your_interstitial_ad_unit_id',
      request: AdRequest(),
      adLoadCallback: InterstitialAdLoadCallback(
        onAdLoaded: (ad) {
          _interstitialAd = ad;
          print('Interstitial Ad loaded.');
        },
        onAdFailedToLoad: (error) {
          print('Interstitial Ad failed to load: $error');
        },
      ),
    );
  }

  void _showInterstitialAd() {
    if (_interstitialAd != null) {
      _interstitialAd!.show();
    } else {
      print('Interstitial Ad is not ready yet.');
    }
  }

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

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

3.3 激励视频广告

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

class _HomeScreenState extends State<HomeScreen> {
  RewardedAd? _rewardedAd;

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

  void _loadRewardedAd() {
    RewardedAd.load(
      unitId: 'your_rewarded_ad_unit_id',
      request: AdRequest(),
      rewardedAdLoadCallback: RewardedAdLoadCallback(
        onAdLoaded: (ad) {
          _rewardedAd = ad;
          print('Rewarded Ad loaded.');
        },
        onAdFailedToLoad: (error) {
          print('Rewarded Ad failed to load: $error');
        },
      ),
    );
  }

  void _showRewardedAd() {
    if (_rewardedAd != null) {
      _rewardedAd!.show(
        onUserEarnedReward: (RewardedAd ad, RewardItem reward) {
          print('User earned reward: ${reward.amount} ${reward.type}');
        },
      );
    } else {
      print('Rewarded Ad is not ready yet.');
    }
  }

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

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

4. 处理广告生命周期

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

[@override](/user/override)
void dispose() {
  _bannerAd?.dispose();
  _interstitialAd?.dispose();
  _rewardedAd?.dispose();
  super.dispose();
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!