Flutter原生广告集成插件flutter_native_ad的使用

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

Flutter原生广告集成插件flutter_native_ad的使用

flutter_native_ad 插件介绍

flutter_native_ad 是一个强大的且易于使用的 Flutter 插件,用于在您的 Flutter 应用程序中集成各种广告格式。该插件支持横幅广告、全屏广告、奖励广告、应用打开广告、原生中等广告、原生横幅广告和视频原生广告。它旨在提供无缝的广告体验并最大化您的应用程序收入。

特性

  • 横幅广告:显示标准横幅广告。
  • 全屏广告:在应用程序的自然过渡点显示全屏广告。
  • 奖励广告:奖励用户观看视频广告或与广告互动。
  • 应用打开广告:当用户打开您的应用程序时显示广告。
  • 原生中等广告:显示与应用程序内容无缝融合的广告。
  • 原生横幅广告:显示较小但内容丰富的横幅广告。
  • 视频原生广告:集成与应用程序外观匹配的视频广告。

安装

pubspec.yaml 文件中添加 flutter_native_ad 作为依赖项:

dependencies:
  flutter_native_ad: ^latest_version

安装插件:

flutter pub get

Android 配置

  1. 更新 AndroidManifest.xmlAndroidManifest.xml 中添加 <meta-data> 标签以包含 AdMob App ID。您可以在 AdMob UI 中找到您的 App ID。将以下代码插入到 AndroidManifest.xml 文件中,并将 YOUR_DEVICE_ID 替换为实际的设备测试 ID(如果需要)。
<manifest>
  <application>
    <meta-data
      android:name="com.google.android.gms.ads.APPLICATION_ID"
      android:value="ca-app-pub-3940256099942544~3347511713"/>
  </application>
</manifest>
  1. 初始化插件 在应用程序启动时初始化插件,通常在 main 函数中进行。
import 'package:flutter/material.dart';
import 'package:flutter_native_ad/flutter_native_ad.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  FlutterNativeAd.init();
  runApp(const MyApp());
}

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

示例代码

以下是使用 flutter_native_ad 插件的完整示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_native_ad/flutter_native_ad.dart';
import 'screens/home_screen.dart';

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

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

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

class _HomeScreenState extends State<HomeScreen> {
  bool isBannerAdReady = false;
  final _adBanner = FlutterBannerAd();

  [@override](/user/override)
  void initState() {
    super.initState();
    _adBanner.loadBannerAd(adUnitId: "Your Banner ID",
        onAdLoaded: (_) {
          setState(() {
            isBannerAdReady = true;
          });
        },
        onAdFailedToLoad: (ad, err) {
          print('Failed to load a banner ad: ${err.message}');
          ad.dispose();
        });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    if (isBannerAdReady ) {
      return Container(height: 50, child: _adBanner.getBannerAd());
    } else {
      return Container(height: 50, child: SizedBox.shrink());
    }
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成和使用flutter_native_ad插件的示例代码。flutter_native_ad插件通常用于在Flutter应用中展示原生广告。以下步骤展示了如何设置和使用该插件。

前提条件

  1. 确保你已经安装了Flutter SDK。
  2. 确保你已经在你的Flutter项目中添加了flutter_native_ad依赖。

步骤一:添加依赖

在你的pubspec.yaml文件中添加flutter_native_ad依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_native_ad: ^x.y.z  # 请替换为最新版本号

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

步骤二:配置原生广告平台(以AdMob为例)

1. 获取AdMob广告单元ID

首先,你需要在AdMob控制台中创建一个原生广告单元并获取其ID。

2. 在android/app/src/main/AndroidManifest.xml中添加必要的权限和元数据

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

    <application
        ... >
        <!-- AdMob App ID -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx"/>
        ...
    </application>

    <!-- Required for AdMob -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

3. 在ios/Runner/Info.plist中添加AdMob配置(如果使用iOS)

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx</string>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

步骤三:集成flutter_native_ad插件

1. 导入插件

在你的Dart文件中导入flutter_native_ad插件:

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

2. 初始化广告并展示

下面是一个简单的示例,展示如何在Flutter应用中展示原生广告:

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

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

class NativeAdExample extends StatefulWidget {
  @override
  _NativeAdExampleState createState() => _NativeAdExampleState();
}

class _NativeAdExampleState extends State<NativeAdExample> {
  FlutterNativeAd? _nativeAd;
  bool _isLoading = true;

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

  void _loadNativeAd() {
    FlutterNativeAd.load(
      adUnitId: 'ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx', // 替换为你的AdMob原生广告单元ID
      factoryId: 'ad_factory',
      targetingInfo: FlutterNativeAdTargetingInfo(
        keywords: ['flutter', 'mobile'],
        contentUrl: 'https://www.example.com',
        // 可以根据需要添加其他定向信息
      ),
      listener: FlutterNativeAdListener(
        onAdLoaded: (FlutterNativeAd ad) {
          setState(() {
            _nativeAd = ad;
            _isLoading = false;
          });
        },
        onAdFailedToLoad: (int errorCode, String errorMessage) {
          print("Ad failed to load: $errorMessage");
          setState(() {
            _isLoading = false;
          });
        },
        onAdOpened: () {
          print("Ad opened");
        },
        onAdClosed: () {
          print("Ad closed");
        },
        onAdLeftApplication: () {
          print("Ad left application");
        },
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Native Ad Example'),
      ),
      body: Center(
        child: _isLoading
            ? CircularProgressIndicator()
            : _nativeAd != null
                ? NativeAdWidget(
                    ad: _nativeAd!,
                    adOptions: NativeAdOptions(
                      // 根据需要配置广告展示选项
                    ),
                    onAdClicked: () {
                      print("Ad clicked");
                    },
                  )
                : Container(
                    child: Text('No Ad Loaded'),
                  ),
      ),
    );
  }
}

在这个示例中,我们创建了一个Flutter应用,并在应用中加载并展示了一个原生广告。广告加载完成后,我们将_isLoading设置为false,并展示广告。如果广告加载失败,我们也将_isLoading设置为false并显示一个提示文本。

请注意,实际使用时你需要替换adUnitId为你的AdMob原生广告单元ID,并根据需要配置其他参数。

希望这个示例对你有帮助!

回到顶部