Flutter广告集成插件flutter_adfit的使用

Flutter广告集成插件flutter_adfit的使用

卡卡奥爱德菲特提供的广告横幅视图实现的软件包。

  • 本软件包不是卡卡奥爱德菲特官方提供的插件。
  • 卡卡奥爱德菲特提供的广告详细信息可以在 AdFit平台 查看。

平台支持

  • ✅ android
  • ✅ iOS
  • web (尚未支持)

开始使用

1. 获取广告单元ID(Client ID)

为了接收广告,您需要在 AdFit平台 注册应用并获取广告单元ID(Client ID)。您可以在以下网站注册应用并获取广告单元ID。AdFit平台:https://adfit.kakao.com

2. 项目配置

2-1. Android

网络安全设置 (target API 28 及以上)

如果您的应用 targetSdkVersion 设置为 Android 9(API 级别 28)及以上,则为了使广告正常展示和点击,您需要允许普通文本流量的网络安全设置。

  1. 创建或修改 res/xml/network_security_config.xml 文件,添加以下内容:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true"/>
    </network-security-config>
    
  2. AndroidManifest.xml 中添加以下属性:

    <application 
       ...
       android:networkSecurityConfig="@xml/network_security_config" >
    

2-2. iOS

iOS 9 ATS (App Transport Security) 处理 (iOS 9 及以上)

从 iOS 9 开始,ATS (App Transport Security) 功能默认启用,并且只允许加密的 HTTPS 通信。虽然 AdFit SDK 在 ATS 启用状态下也能正常工作,但广告可能会展示不支持 HTTPS 的广告主页面。因此,您需要将以下内容应用到应用项目的 Info.plist 文件中:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
Objective-C 项目 (仅限 Objective-C)

AdFit SDK 是基于最新版本的 Xcode 开发的。如果您在 Objective-C 项目中使用 AdFit SDK,则需要嵌入 Swift 标准库。请在应用项目的构建设置中将 Always Embed Swift Standard Libraries 设置为 Yes

ATT (App Tracking Transparency) 框架应用 (iOS 14 及以上)

针对 iOS14 的应用必须应用 ATT 框架才能获得 IDFA 识别符。您需要向用户说明应用请求数据权限的原因。请在 Info.plist 文件中添加以下内容:

<key>NSUserTrackingUsageDescription</key>
<string>为了提供定制广告,您的数据将被使用。</string>

使用方法

import 'package:flutter_adfit/flutter_adfit.dart';

AdFitBanner(
  adId: Platform.isIOS ? '<IOS_AD_ID>'
        : Platform.isAndroid ? '<ANDROID_AD_ID>' : '',
  adSize: AdFitBannerSize.BANNER,  
  listener: (AdFitEvent event, AdFitEventData data) {  
    switch (event) {  
      case AdFitEvent.AdReceived:  
        // 广告成功加载时调用
        break;  
      case AdFitEvent.AdClicked:  
        // 用户点击广告时调用
        break;  
      case AdFitEvent.AdReceiveFailed:  
        // 广告加载失败时调用
        break;  
      case AdFitEvent.OnError:  
        // 广告初始化失败时调用
        break;  
    }  
  },  
)

AdFitBannerSize

名称 尺寸
LARGE_RECTANGLE 300x250
BANNER 320x100
SMALL_BANNER 320x50

AdFitEvent

事件名称 描述
AdReceived 广告展示完成时调用
AdClicked 用户点击广告时调用
AdReceiveFailed 广告加载失败时调用
OnError 广告初始化失败时调用

完整示例

下面是一个完整的 Flutter 应用示例,展示了如何集成和使用 flutter_adfit 插件。

import 'package:flutter/material.dart';
import 'package:flutter_adfit/flutter_adfit.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 AdFit Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                'Welcome to the AdFit Example!',
                style: TextStyle(fontSize: 20),
              ),
              SizedBox(height: 20),
              AdFitBanner(
                adId: '<YOUR_AD_ID>',
                adSize: AdFitBannerSize.BANNER,
                listener: (AdFitEvent event, AdFitEventData data) {
                  switch (event) {
                    case AdFitEvent.AdReceived:
                      print('Ad received successfully');
                      break;
                    case AdFitEvent.AdClicked:
                      print('Ad clicked by user');
                      break;
                    case AdFitEvent.AdReceiveFailed:
                      print('Failed to receive ad: ${data.errorCode}');
                      break;
                    case AdFitEvent.OnError:
                      print('Error occurred: ${data.message}');
                      break;
                  }
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter项目中集成广告插件flutter_adfit可以帮助你展示各种广告格式,比如横幅广告(Banner Ads)、插屏广告(Interstitial Ads)等。下面是一个基本的使用示例,展示如何在Flutter应用中集成和使用flutter_adfit插件。

步骤 1: 添加依赖

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

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

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

步骤 2: 配置AdFit

在AdFit官网注册并获取你的appIdunitId。然后,在你的Flutter应用的main.dart或其他合适的初始化文件中进行配置。

步骤 3: 初始化AdFit并展示广告

以下是一个完整的示例代码,展示如何初始化AdFit并展示一个横幅广告:

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

void main() {
  // 初始化AdFit SDK
  AdFit.initialize(
    appId: 'YOUR_APP_ID', // 替换为你的appId
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('AdFit Integration Example'),
        ),
        body: Center(
          child: AdFitBannerAd(
            unitId: 'YOUR_BANNER_UNIT_ID', // 替换为你的横幅广告unitId
            adSize: AdSize.banner, // 横幅广告尺寸
            listener: (AdFitAdEvent event, Map<String, dynamic> args) {
              // 广告事件监听器
              print('Ad event: $event, args: $args');
              if (event == AdFitAdEvent.loaded) {
                print('Ad loaded successfully');
              } else if (event == AdFitAdEvent.failedToLoad) {
                print('Failed to load ad: ${args['error']}');
              }
            },
          ),
        ),
      ),
    );
  }
}

插屏广告示例

如果你还想展示插屏广告,可以按照以下方式实现:

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

void main() {
  // 初始化AdFit SDK
  AdFit.initialize(
    appId: 'YOUR_APP_ID', // 替换为你的appId
  );

  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _isAdLoaded = false;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('AdFit Integration Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: _showInterstitialAd,
                child: Text('Show Interstitial Ad'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void _showInterstitialAd() async {
    // 加载插屏广告
    final AdFitInterstitialAd interstitialAd = AdFitInterstitialAd(
      unitId: 'YOUR_INTERSTITIAL_UNIT_ID', // 替换为你的插屏广告unitId
      listener: (AdFitAdEvent event, Map<String, dynamic> args) {
        // 广告事件监听器
        if (event == AdFitAdEvent.loaded) {
          setState(() {
            _isAdLoaded = true;
          });
          print('Interstitial Ad loaded successfully');
        } else if (event == AdFitAdEvent.failedToLoad) {
          print('Failed to load interstitial ad: ${args['error']}');
        } else if (event == AdFitAdEvent.closed) {
          print('Interstitial Ad closed');
          setState(() {
            _isAdLoaded = false;
          });
        }
      },
    );

    // 加载广告
    await interstitialAd.load();

    // 如果广告加载成功,则展示广告
    if (_isAdLoaded) {
      interstitialAd.show();
    }
  }
}

注意事项

  1. 确保你已经正确配置了AdFit的appId和unitId
  2. 监听广告事件以处理加载成功、加载失败等情况。
  3. 遵循AdFit的使用政策和指南,以确保合规性。

以上代码提供了一个基本的集成示例,你可以根据需要进行调整和扩展。

回到顶部