Flutter广告中介插件gma_mediation_pangle的使用

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

Flutter广告中介插件gma_mediation_pangle的使用

简介

此仓库包含用于与Google Mobile Ads插件一起使用的Mediation Pangle Flutter插件的源代码。它通过Google Mobile Ads SDK启用对Pangle广告网络的中介。

gma_mediation_pangle

文档

有关如何与google_mobile_ads插件一起使用的说明,请参阅开发者指南

下载

请访问pub.dev获取插件的最新版本。

建议改进

如果您需要报告错误、提出功能请求或建议其他改进,请使用GitHub的Issue跟踪器

其他资源

许可证

本项目采用Apache 2.0许可证

示例代码

以下是一个简单的示例应用,展示了如何在Flutter项目中使用gma_mediation_pangle插件。

示例代码

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize();
  runApp(const MyApp());
}

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late BannerAd _bannerAd;

  @override
  void initState() {
    super.initState();
    _createBannerAd();
  }

  void _createBannerAd() {
    _bannerAd = BannerAd(
      adUnitId: 'YOUR_BANNER_AD_UNIT_ID',
      size: AdSize.banner,
      request: AdRequest(),
      listener: BannerAdListener(
        onAdLoaded: (ad) {
          print('Banner ad loaded.');
        },
        onAdFailedToLoad: (ad, error) {
          print('Banner ad failed to load: $error');
          ad.dispose();
        },
      ),
    )..load();
  }

  @override
  void dispose() {
    _bannerAd.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              const Text('Test app'),
              SizedBox(height: 20),
              AdWidget(ad: _bannerAd),
            ],
          ),
        ),
      ),
    );
  }
}

说明

  1. 初始化广告:在main函数中调用WidgetsFlutterBinding.ensureInitialized()以确保Flutter绑定已经初始化,然后调用MobileAds.instance.initialize()来初始化Google Mobile Ads SDK。
  2. 创建横幅广告:在_createBannerAd方法中创建一个横幅广告,并设置广告单元ID、广告大小、广告请求和广告监听器。
  3. 加载广告:调用_bannerAd.load()方法加载广告。
  4. 显示广告:在build方法中使用AdWidget组件将广告显示在界面上。
  5. 清理资源:在dispose方法中释放广告资源,避免内存泄漏。

请将YOUR_BANNER_AD_UNIT_ID替换为您在AdMob控制台中创建的横幅广告单元ID。

希望这个示例能帮助您快速上手使用gma_mediation_pangle插件。如果有任何问题,欢迎随时提问!


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

1 回复

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


在Flutter项目中集成广告中介插件 gma_mediation_pangle 可以帮助你管理和优化来自不同广告网络的广告请求。以下是一个基本的代码案例,展示了如何在Flutter项目中集成和使用 gma_mediation_pangle 插件。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  gma_mediation_pangle: ^最新版本号  # 请替换为实际的最新版本号

然后运行 flutter pub get 来获取依赖。

2. 配置 Android 项目

android/app/build.gradle 中添加以下内容:

android {
    ...
    defaultConfig {
        ...
        manifestPlaceholders = [
                // 设置你的穿山甲广告 ID
                'TTP_PLATFORM_ID': '你的穿山甲平台ID',
                'TTP_CHANNEL_ID': '你的渠道ID'
        ]
    }
}

android/app/src/main/AndroidManifest.xml 中添加权限:

<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" />

    <application
        ... >
        <!-- 穿山甲广告 SDK 所需的元数据 -->
        <meta-data
            android:name="com.tencent.mm.opensdk.platform"
            android:value="${TTP_PLATFORM_ID}" />
        <meta-data
            android:name="com.tencent.mm.opensdk.appid"
            android:value="你的微信开放平台AppID" /> <!-- 如果需要微信登录功能 -->
    </application>
</manifest>

3. 初始化并加载广告

在你的 Flutter 项目中,你可以通过以下方式初始化并加载广告。

初始化广告中介(通常在应用启动时):

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化穿山甲广告中介
  GmaPangle.init(
    appId: '你的穿山甲AppID',
    // 其他可选配置参数
  );
  runApp(MyApp());
}

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

加载并显示广告(例如,在一个按钮点击事件中):

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

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

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

  @override
  void initState() {
    super.initState();
    // 可以在这里预加载广告,或者在需要显示广告时再加载
    // _loadBannerAd();
  }

  void _loadBannerAd() {
    BannerAd.createAd(
      adSlotId: '你的广告位ID',
      adSize: AdSize.banner, // 或者其他尺寸
      listener: (AdStatus status, {String? errorMsg}) {
        if (status == AdStatus.loaded) {
          // 广告加载成功
          setState(() {}); // 更新UI以显示广告
        } else if (status == AdStatus.failedToLoad) {
          // 广告加载失败
          print('广告加载失败: $errorMsg');
        }
      },
    ).then((ad) {
      _bannerAd = ad;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('穿山甲广告中介示例'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () {
                // 显示广告
                _loadBannerAd();
              },
              child: Text('加载并显示Banner广告'),
            ),
            // 显示广告组件(当广告加载成功后)
            _bannerAd?.widget ?? Container(),
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    // 释放广告资源
    _bannerAd?.dispose();
    super.dispose();
  }
}

请注意,这只是一个基本的示例,实际应用中你可能需要根据具体需求调整广告位ID、广告尺寸以及其他配置参数。同时,确保你已经在穿山甲平台创建了相应的广告位,并获取了正确的广告位ID和AppID。

回到顶部