Flutter广告展示插件flutter_max_ad的使用

Flutter广告展示插件flutter_max_ad的使用

获取开始

设置Proguard

0.3.9版本的Android包含TopOn 0.4.1版本的iOS不包含TopOn也不包含Facebook

Android

配置Max其他平台

https://developers.applovin.com/en/android/preparing-mediated-networks/

配置TopOn其他平台

https://app.toponad.com/m/sdk/download

打开你的AndroidManifest.xml文件,并添加以下内容:

  <uses-library
    android:name="org.apache.http.legacy"
    android:required="false" />
  <meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-3940256099942544~3347511713" />
  <meta-data
    android:name="com.google.android.gms.ads.AD_MANAGER_APP"
    android:value="true" />
iOS

打开你的Podfile文件,在目标Runner中添加以下内容:

pod 'AppLovinMediationChartboostAdapter'
pod 'AppLovinMediationFyberAdapter'
pod 'AppLovinMediationGoogleAdManagerAdapter'
pod 'AppLovinMediationGoogleAdapter'
pod 'AppLovinMediationInMobiAdapter'
pod 'AppLovinMediationIronSourceAdapter'
pod 'AppLovinMediationVungleAdapter'
pod 'AppLovinMediationMintegralAdapter'
pod 'AppLovinMediationUnityAdsAdapter'
pod 'AppLovinMediationByteDanceAdapter'
pod 'AppLovinMediationFacebookAdapter'

在你的Info.plist文件中添加以下内容:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb[APP_ID]</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookClientToken</key>
<string>[CLIENT_TOKEN]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~2558002522</string>
<key>SKAdNetworkItems</key>
<array>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>su67r6k2v3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cstr6suwn9.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4fzdc2evr5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4pfyvq9l8r.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>2fnua5tdw4.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ydx93a7ass.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>5a6flpkh64.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>p78axxw29g.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v72qych5uu.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ludvb6z3bs.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cp8zw746q7.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3sh42y64q3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>c6k4g5qg8m.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>s39g8k73mm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qy4746246.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>f38h382jlk.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>hs6bdukanm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v4nxqhlyqp.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>wzmmz9fp6w.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>yclnxrl5pm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>t38b2kh725.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>7ug5zh24hu.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>gta9lk7p23.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>vutu7akeur.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>y5ghdn5j9k.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>n6fk4nfna4.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v9wttpbfk9.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>n38lu8286q.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>47vhws6wlr.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>kbd757ywx3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9t245vhmpl.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>eh6m2bh4zr.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>a2p9lx4jpn.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>22mmun2rn5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4468km3ulz.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>2u9pt9hc89.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8s468mfl3y.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>klf5c3l5u5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ppxm28t8ap.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ecpz2srf59.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>uw77j35x4d.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>pwa73g5rt2.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mlmmfzh3r3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>578prtvx9j.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4dzt52r2t5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>e5fvkxwrpn.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8c4e2ghe7u.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>zq492l623r.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3rd42ekr43.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qcr597p9d.skadnetwork</string>
  </dict>
</array>
<key>NSUserNotificationsUsageDescription</key>
<string>Demo</string>

通过以上步骤,你已经完成了对flutter_max_ad插件的基本配置。接下来,你可以根据需要实现广告的展示功能。

完整示例代码

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Flutter Max Ad Example')),
        body: Center(child: MyHomePage()),
      ),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  final FlutterMaxAd flutterMaxAd = FlutterMaxAd();

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化广告
    flutterMaxAd.initialize();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        ElevatedButton(
          onPressed: () {
            // 展示广告
            flutterMaxAd.showAd();
          },
          child: Text('Show Ad'),
        ),
      ],
    );
  }
}

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

1 回复

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


flutter_max_ad 是一个用于在 Flutter 应用中展示广告的插件,主要集成了 AppLovin MAX SDK。通过这个插件,开发者可以轻松地在 Flutter 应用中展示横幅广告、插页式广告、激励视频广告等。

以下是使用 flutter_max_ad 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter_max_ad: ^<latest_version>

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

2. 初始化插件

在使用插件之前,需要先初始化它。通常在 main.dart 文件中进行初始化:

import 'package:flutter_max_ad/flutter_max_ad.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 AppLovin MAX SDK
  await FlutterMaxAd.initialize(
    sdkKey: 'YOUR_SDK_KEY',
  );
  
  runApp(MyApp());
}

YOUR_SDK_KEY 替换为你在 AppLovin 平台上获取的 SDK Key。

3. 展示横幅广告

要在应用中展示横幅广告,可以使用 BannerAdWidget

import 'package:flutter_max_ad/flutter_max_ad.dart';

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Max Ad Example'),
      ),
      body: Column(
        children: [
          Expanded(
            child: Center(
              child: Text('Your content here'),
            ),
          ),
          BannerAdWidget(
            adUnitId: 'YOUR_BANNER_AD_UNIT_ID',
            adSize: AdSize.banner,
          ),
        ],
      ),
    );
  }
}

YOUR_BANNER_AD_UNIT_ID 替换为你在 AppLovin 平台上创建的横幅广告单元 ID。

4. 展示插页式广告

插页式广告通常在用户点击某个按钮或完成某个操作时展示。可以使用 InterstitialAd 来加载和展示插页式广告:

import 'package:flutter_max_ad/flutter_max_ad.dart';

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  InterstitialAd _interstitialAd;

  @override
  void initState() {
    super.initState();
    _interstitialAd = InterstitialAd(
      adUnitId: 'YOUR_INTERSTITIAL_AD_UNIT_ID',
    );
    _interstitialAd.load();
  }

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

  void _showInterstitialAd() {
    if (_interstitialAd.isLoaded) {
      _interstitialAd.show();
    }
  }

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

YOUR_INTERSTITIAL_AD_UNIT_ID 替换为你在 AppLovin 平台上创建的插页式广告单元 ID。

5. 展示激励视频广告

激励视频广告通常用于奖励用户观看广告。可以使用 RewardedAd 来加载和展示激励视频广告:

import 'package:flutter_max_ad/flutter_max_ad.dart';

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  RewardedAd _rewardedAd;

  @override
  void initState() {
    super.initState();
    _rewardedAd = RewardedAd(
      adUnitId: 'YOUR_REWARDED_AD_UNIT_ID',
    );
    _rewardedAd.load();
  }

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

  void _showRewardedAd() {
    if (_rewardedAd.isLoaded) {
      _rewardedAd.show(
        onRewarded: (reward) {
          // 处理奖励逻辑
          print('Reward: $reward');
        },
      );
    }
  }

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

YOUR_REWARDED_AD_UNIT_ID 替换为你在 AppLovin 平台上创建的激励视频广告单元 ID。

6. 处理广告事件

你可以监听广告的各种事件,例如广告加载成功、广告展示、广告点击等:

_interstitialAd.onAdLoaded.listen((event) {
  print('Interstitial Ad Loaded');
});

_interstitialAd.onAdDisplayed.listen((event) {
  print('Interstitial Ad Displayed');
});

_interstitialAd.onAdClicked.listen((event) {
  print('Interstitial Ad Clicked');
});

7. 处理用户隐私

根据 GDPR 和 CCPA 等隐私法规,你可能需要设置用户的地理位置和隐私选项:

await FlutterMaxAd.setUserConsent(true);
await FlutterMaxAd.setIsAgeRestrictedUser(false);
await FlutterMaxAd.setDoNotSell(false);

8. 测试广告

在开发和测试阶段,你可以使用测试广告单元 ID 来确保广告展示正常:

const testBannerAdUnitId = 'YOUR_TEST_BANNER_AD_UNIT_ID';
const testInterstitialAdUnitId = 'YOUR_TEST_INTERSTITIAL_AD_UNIT_ID';
const testRewardedAdUnitId = 'YOUR_TEST_REWARDED_AD_UNIT_ID';
回到顶部