Flutter广告网络集成插件audience_network的使用

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

Flutter广告网络集成插件audience_network的使用

audience_network

Pub GitHub

Forked from https://pub.dev/packages/facebook_audience_network

  • 增加了对多个Interstitial和Rewarded Ads的支持
  • 增加了对iOS上的Rewarded Ads的支持

Facebook Audience Network 插件用于Flutter应用(支持Android和iOS)。

Banner Ad Native Banner Ad Native Ad
Banner Ad Native Banner Ad Native Ad
Interstitial Ad Rewarded Video Ad
Interstitial Ad Rewarded Ad

开始使用

1. 初始化

为了测试目的,你需要获取测试设备的哈希ID。要获取哈希ID:

  1. 在应用程序初始化时调用 <code>AudienceNetwork.init()</code>
  2. <code>BannerAd</code> 小部件放置在你的应用程序中。
  3. 运行应用程序。

哈希ID将打印到日志中。将其粘贴到 <code>testingId</code> 参数中。

AudienceNetwork.init(
  testingId: "37b1da9d-b48c-4103-a393-2e095e734bd6", //可选
  testMode: true, // 可选
  iOSAdvertiserTrackingEnabled: true, // 默认为false
);

iOS设置

在Podfile中,将iOS部署目标版本设置为9.0。


2. 显示Banner广告

Container(
  alignment: Alignment(0.5, 1), // 居中对齐
  child: BannerAd(
    placementId: Platform.isAndroid
        ? "YOUR_ANDROID_PLACEMENT_ID"
        : "YOUR_IOS_PLACEMENT_ID",
    bannerSize: BannerSize.STANDARD,
    listener: BannerAdListener(
      onError: (code, message) => print('error'), // 错误处理
      onLoaded: () => print('loaded'), // 广告加载成功
      onClicked: () => print('clicked'), // 广告点击
      onLoggingImpression: () => print('logging impression'), // 广告印象记录
    ),
  ),
)

3. 显示Interstitial广告

final interstitialAd = InterstitialAd(InterstitialAd.testPlacementId);
interstitialAd.listener = InterstitialAdListener(
  onLoaded: () {
    interstitialAd.show(); // 显示广告
  },
  onDismissed: () {
    interstitialAd.destroy(); // 销毁广告
    print('Interstitial dismissed'); // 打印广告关闭信息
  },
);
interstitialAd.load(); // 加载广告

4. 显示Rewarded视频广告

final rewardedAd = RewardedAd(
  RewardedAd.testPlacementId,
  userId: 'some_user_id', // 可选参数,用于服务器端验证
);
rewardedAd.listener = RewardedAdListener(
  onLoaded: () {
    rewardedAd.show(); // 显示广告
  },
  onVideoComplete: () {
    rewardedAd.destroy(); // 销毁广告
    print('Video completed'); // 打印视频完成信息
  },
);
rewardedAd.load(); // 加载广告

5. 显示原生广告

注意:NATIVE_AD_HORIZONTALNATIVE_AD_VERTICAL 广告类型仅在iOS上受支持。在Android上使用 NATIVE_AD

NativeAd(
  placementId: NativeAd.testPlacementId,
  adType: NativeAdType.NATIVE_AD,
  width: double.infinity,
  height: 300,
  backgroundColor: Colors.blue,
  titleColor: Colors.white,
  descriptionColor: Colors.white,
  buttonColor: Colors.deepPurple,
  buttonTitleColor: Colors.white,
  buttonBorderColor: Colors.white,
  // 如果不想在小部件重建时刷新adview,则设置为true
  keepAlive: true,
  // 如果想在广告加载时折叠原生广告视图,则设置为false
  keepExpandedWhileLoading: false, 
  // 在广告加载时扩展adview的动画持续时间(以毫秒为单位)
  expandAnimationDuraion: 300, 
  listener: NativeAdListener(
    onError: (code, message) => print('error'), // 错误处理
    onLoaded: () => print('loaded'), // 广告加载成功
    onClicked: () => print('clicked'), // 广告点击
    onLoggingImpression: () => print('logging impression'), // 广告印象记录
    onMediaDownloaded: () => print('media downloaded'), // 媒体下载完成
  ),
)

6. 显示原生横幅广告

使用 <code>NativeBannerAdSize</code> 来选择原生横幅广告的高度。height 属性对原生横幅广告无效。

NativeAd(
  placementId: NativeAd.testPlacementId,
  adType: NativeAdType.NATIVE_BANNER_AD,
  bannerAdSize: NativeBannerAdSize.HEIGHT_100,
  width: double.infinity,
  backgroundColor: Colors.blue,
  titleColor: Colors.white,
  descriptionColor: Colors.white,
  buttonColor: Colors.deepPurple,
  buttonTitleColor: Colors.white,
  buttonBorderColor: Colors.white,
  listener: NativeAdListener(
    onError: (code, message) => print('error'), // 错误处理
    onLoaded: () => print('loaded'), // 广告加载成功
    onClicked: () => print('clicked'), // 广告点击
    onLoggingImpression: () => print('logging impression'), // 广告印象记录
    onMediaDownloaded: () => print('media downloaded'), // 媒体下载完成
  ),
)

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用Facebook Audience Network广告网络插件audience_network的示例代码。这个插件允许你在Flutter应用中显示Facebook广告。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  audience_network: ^0.x.x  # 请检查最新版本号并替换

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

2. 配置Android项目

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
        <!-- 其他配置 -->

        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id"/>

        <activity
            android:name="com.facebook.ads.AudienceNetworkActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize"
            android:exported="true"/>

        <!-- 其他配置 -->
    </application>
</manifest>

android/app/src/main/res/values/strings.xml中添加Facebook App ID

<resources>
    <string name="facebook_app_id">YOUR_FACEBOOK_APP_ID</string>
</resources>

3. 配置iOS项目

ios/Runner/Info.plist中添加配置

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fbYOUR_FACEBOOK_APP_ID</string>
        </array>
    </dict>
</array>
<key>FacebookAppID</key>
<string>YOUR_FACEBOOK_APP_ID</string>
<key>FacebookDisplayName</key>
<string>YourAppName</string>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fb-messenger-share-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>

ios/Podfile中添加FBSDKCoreKitFBSDKAudienceNetwork依赖(如果需要)

platform :ios, '10.0'

target 'Runner' do
  use_frameworks!
  use_modular_headers!

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))

  # 添加以下行
  pod 'FBSDKCoreKit'
  pod 'FBSDKAudienceNetwork'
end

然后运行pod install

4. 使用audience_network插件显示广告

在你的Flutter代码中,你可以这样使用audience_network插件来显示一个横幅广告:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Facebook Audience Network Example'),
        ),
        body: Center(
          child: BannerAd(
            placementId: 'YOUR_PLACEMENT_ID',
            width: 320,
            height: 50,
            listener: (BannerAdEvent event, Map<String, dynamic> data) {
              if (event == BannerAdEvent.loaded) {
                print('Banner ad loaded.');
              } else if (event == BannerAdEvent.failedToLoad) {
                print('Banner ad failed to load: ${data['error']?.message}');
              }
            },
          ),
        ),
      ),
    );
  }
}

确保将YOUR_PLACEMENT_ID替换为你从Facebook Audience Network获取的实际广告位ID。

5. 运行应用

现在,你可以运行你的Flutter应用,并应该能看到一个Facebook横幅广告显示在你的应用中。

注意:确保你的Facebook应用ID和广告位ID都是正确配置的,并且你的Facebook应用已经通过审核,有权显示广告。

回到顶部