Flutter广告集成插件adpie_sdk的使用

Flutter广告集成插件adpie_sdk的使用

AdPie-Flutter-SDK

AdPie Flutter 插件用于在Android和iOS应用中集成广告。

完整示例代码

import 'package:flutter/material.dart';
import 'package:adpie_sdk/adpie_sdk.dart';
import 'dart:io' show Platform;
import 'package:app_tracking_transparency/app_tracking_transparency.dart';

import 'banner_ad.dart';
import 'interstitial_ad.dart';
import 'rewarded_ad.dart';

String mediaId = Platform.isAndroid ? "57342d1b7174ea39844cac10" : "57342d787174ea39844cac11";

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  if (Platform.isAndroid) {
    AdPieSdk.initialize(mediaId);
  } else {
    initPlugin();
  }

  runApp(const MyApp());
}

Future<void> initPlugin() async {
  final TrackingStatus status =
      await AppTrackingTransparency.trackingAuthorizationStatus;
  if (status == TrackingStatus.notDetermined) {
    final TrackingStatus status =
        await AppTrackingTransparency.requestTrackingAuthorization();
  }

  final uuid = await AppTrackingTransparency.getAdvertisingIdentifier();
  print("UUID: $uuid");

  AdPieSdk.initialize(mediaId);
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'AdPie Sample',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'AdPie Sample Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    final List<String> adList = ['Banner Ad', 'Interstitial Ad', 'Rewarded Ad'];

    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: ListView.separated(
        itemCount: adList.length,
        itemBuilder: (BuildContext context, int index) {
          return ListTile(
            title: Text(adList[index], textAlign: TextAlign.center),
            onTap: () {
              switch(index) {
                case 0:
                  Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => AdPieBanner()),
                  );
                  break;
                case 1:
                  Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => AdPieInterstitialAd()),
                  );
                  break;
                case 2:
                  Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => AdPieRewardedAd()),
                  );
                  break;
              }
            },
          );
        }, 
        separatorBuilder: (BuildContext context, int index) { 
          return Divider(thickness: 0,); 
        },
      )
    );
  }
}

Banner Ad 示例代码

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

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

class _AdPieBannerState extends State<AdPieBanner> {
  [@override](/user/override)
  void initState() {
    super.initState();
    AdPieSdk.loadBannerAd(
      placementId: "YOUR_PLACEMENT_ID",
      onAdLoaded: () {
        // 广告加载完成后的回调
        print("Banner Ad loaded");
      },
      onAdFailedToLoad: (error) {
        // 加载失败后的回调
        print("Banner Ad failed to load: $error");
      },
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Container(
      child: AdPieSdk.bannerAdView(),
    );
  }
}

Interstitial Ad 示例代码

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

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

class _AdPieInterstitialAdState extends State<AdPieInterstitialAd> {
  bool _isInterstitialAdLoaded = false;

  [@override](/user/override)
  void initState() {
    super.initState();
    AdPieSdk.loadInterstitialAd(
      placementId: "YOUR_PLACEMENT_ID",
      onAdLoaded: () {
        setState(() {
          _isInterstitialAdLoaded = true;
        });
        print("Interstitial Ad loaded");
      },
      onAdFailedToLoad: (error) {
        print("Interstitial Ad failed to load: $error");
      },
    );
  }

  void _showInterstitialAd() {
    if (_isInterstitialAdLoaded) {
      AdPieSdk.showInterstitialAd();
    } else {
      print("Interstitial Ad is not loaded yet.");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Interstitial Ad"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showInterstitialAd,
          child: Text("Show Interstitial Ad"),
        ),
      ),
    );
  }
}

Rewarded Ad 示例代码

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

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

class _AdPieRewardedAdState extends State<AdPieRewardedAd> {
  bool _isRewardedAdLoaded = false;

  [@override](/user/override)
  void initState() {
    super.initState();
    AdPieSdk.loadRewardedAd(
      placementId: "YOUR_PLACEMENT_ID",
      onAdLoaded: () {
        setState(() {
          _isRewardedAdLoaded = true;
        });
        print("Rewarded Ad loaded");
      },
      onAdFailedToLoad: (error) {
        print("Rewarded Ad failed to load: $error");
      },
    );
  }

  void _showRewardedAd() {
    if (_isRewardedAdLoaded) {
      AdPieSdk.showRewardedAd(onUserEarnedReward: (amount, type) {
        print("User earned reward: $amount $type");
      });
    } else {
      print("Rewarded Ad is not loaded yet.");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Rewarded Ad"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showRewardedAd,
          child: Text("Show Rewarded Ad"),
        ),
      ),
    );
  }
}

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

1 回复

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


adpie_sdk 是一个用于在 Flutter 应用中集成 AdPie 广告的插件。AdPie 是一个广告平台,提供横幅广告、插页式广告、原生广告等多种广告格式。以下是如何在 Flutter 项目中使用 adpie_sdk 插件的步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 adpie_sdk 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  adpie_sdk: ^1.0.0  # 请使用最新版本

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

2. 初始化 AdPie SDK

main.dart 文件中,初始化 AdPie SDK。通常,你需要在应用启动时进行初始化。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  void initState() {
    super.initState();
    AdPieSdk.initialize('YOUR_ADPIE_APP_ID');  // 替换为你的 AdPie App ID
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AdPie SDK Example'),
      ),
      body: Center(
        child: Text('AdPie SDK Integration'),
      ),
    );
  }
}

3. 显示横幅广告

要在应用中显示横幅广告,可以使用 BannerAdView 小部件。

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

class BannerAdExample extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Banner Ad Example'),
      ),
      body: Column(
        children: [
          Expanded(
            child: Center(
              child: Text('Your content here'),
            ),
          ),
          BannerAdView(
            adUnitId: 'YOUR_BANNER_AD_UNIT_ID',  // 替换为你的横幅广告单元 ID
            adSize: AdSize.BANNER_320x50,
          ),
        ],
      ),
    );
  }
}

4. 显示插页式广告

要显示插页式广告,可以使用 InterstitialAd 类。

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

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

class _InterstitialAdExampleState extends State<InterstitialAdExample> {
  InterstitialAd? _interstitialAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _loadInterstitialAd();
  }

  void _loadInterstitialAd() {
    _interstitialAd = InterstitialAd(
      adUnitId: 'YOUR_INTERSTITIAL_AD_UNIT_ID',  // 替换为你的插页式广告单元 ID
      listener: AdListener(
        onAdLoaded: (Ad ad) {
          print('Interstitial Ad loaded.');
        },
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          print('Interstitial Ad failed to load: $error');
        },
        onAdClosed: (Ad ad) {
          print('Interstitial Ad closed.');
        },
      ),
    )..load();
  }

  void _showInterstitialAd() {
    if (_interstitialAd != null) {
      _interstitialAd!.show();
    }
  }

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

5. 显示原生广告

要显示原生广告,可以使用 NativeAd 类。

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

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

class _NativeAdExampleState extends State<NativeAdExample> {
  NativeAd? _nativeAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _loadNativeAd();
  }

  void _loadNativeAd() {
    _nativeAd = NativeAd(
      adUnitId: 'YOUR_NATIVE_AD_UNIT_ID',  // 替换为你的原生广告单元 ID
      listener: AdListener(
        onAdLoaded: (Ad ad) {
          print('Native Ad loaded.');
          setState(() {});
        },
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          print('Native Ad failed to load: $error');
        },
        onAdClosed: (Ad ad) {
          print('Native Ad closed.');
        },
      ),
      nativeAdOptions: NativeAdOptions(
        adChoicesPlacement: AdChoicesPlacement.topRight,
      ),
    )..load();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Native Ad Example'),
      ),
      body: _nativeAd == null
          ? Center(child: Text('Loading Native Ad...'))
          : AdWidget(ad: _nativeAd!),
    );
  }
}
回到顶部