Flutter广告集成插件anythink_sdk的使用

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

Flutter广告集成插件anythink_sdk的使用

Anythink SDK Flutter插件

Anythink SDK Flutter插件适用于Android和iOS平台。

文档

您可以查看我们的集成文档 这里

许可证

该插件采用GNU通用公共许可证(GPL)。


以下是使用Anythink SDK Flutter插件的完整示例代码:

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

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

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

class _MyAppState extends State<MyApp> {
  // 初始化插件
  Future<void> initPlugin() async {
    try {
      await AnythinkFlutterPlugin.initAdUnits(
        androidAppId: 'your_android_app_id',
        iosAppId: 'your_ios_app_id',
      );
      print('初始化成功');
    } catch (e) {
      print('初始化失败: $e');
    }
  }

  // 展示广告
  Future<void> showAd() async {
    try {
      await AnythinkFlutterPlugin.showInterstitialAd(
        adUnitId: 'your_interstitial_ad_unit_id',
      );
      print('展示插屏广告成功');
    } catch (e) {
      print('展示插屏广告失败: $e');
    }
  }

  [@override](/user/override)
  void initState() {
    super.initState();
    // 在初始化时调用初始化方法
    initPlugin();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Anythink SDK Demo'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 点击按钮时展示广告
              showAd();
            },
            child: Text('展示插屏广告'),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成并使用anythink_sdk插件来实现广告功能的示例代码。假设你已经有一个Flutter项目,并且已经配置好了基本的开发环境。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  anythink_sdk: ^最新版本号  # 请替换为实际的最新版本号

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

2. 配置Android和iOS

Android

android/app/src/main/AndroidManifest.xml中添加必要的权限和配置,例如网络权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

然后,在android/app/build.gradle文件中添加以下内容(如果需要的话,根据anythink_sdk的具体要求):

android {
    ...
    defaultConfig {
        ...
        manifestPlaceholders = [
            ANYTHINK_APP_ID: "你的AnyThink App ID",  // 替换为你的AnyThink App ID
            ANYTHINK_APP_KEY: "你的AnyThink App Key" // 替换为你的AnyThink App Key
        ]
    }
}

iOS

ios/Runner/Info.plist中添加必要的权限配置(如网络权限)。

然后,在ios/Podfile中确保你的项目支持Swift(因为某些Flutter插件可能需要Swift支持):

platform :ios, '10.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Release' => :release,
  'Profile' => :release,
}

target 'Runner' do
  use_frameworks!
  config = use_native_modules!

  # Flutter Pod
  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))

  # Plugins
  # Add any pods that require manual linking here (e.g., anythink_sdk)
  # pod 'AnyThinkSDK', :path => '../node_modules/anythink_sdk/ios' # 如果需要手动链接

  # Enable the following line if you want to use Swift in your Flutter project.
  use_frameworks!

  # Prepare symbols to export to the App.
  prepare_command = "flutter build ios --release --no-codesign"
  prepare_command << " && cd #{config.build_dir} && rm -rf Pods && rm Podfile.lock "
  prepare_command << "&& rm -rf #{config.podfile_name}.lock "
  prepare_command << "&& pod install"
  shell(prepare_command)
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

注意:具体的iOS配置可能会根据anythink_sdk的文档有所不同,请务必参考官方文档进行配置。

3. 使用anythink_sdk

在你的Flutter项目中,创建一个新的Dart文件(例如ad_manager.dart)来管理广告逻辑:

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

class AdManager {
  static let adUnitId = "你的广告位ID"; // 替换为你的广告位ID

  static Future<void> loadBannerAd() async {
    try {
      // 加载横幅广告
      await Anythink.loadBanner(
        placementId: adUnitId,
        width: 320,
        height: 50,
        viewController: null, // 在iOS上需要传入一个UIViewController
      );
    } catch (e) {
      print("加载横幅广告失败: $e");
    }
  }

  static Future<void> showBannerAd(BuildContext context) async {
    try {
      // 显示横幅广告
      AnythinkBannerView bannerView = await Anythink.getBannerView(placementId: adUnitId);
      // 你可以将bannerView添加到你的UI中
      // 例如使用Stack或Column来布局
      // context.read<YourState>().addBannerView(bannerView);
    } catch (e) {
      print("显示横幅广告失败: $e");
    }
  }

  static Future<void> showInterstitialAd() async {
    try {
      // 加载并显示插屏广告
      bool isReady = await Anythink.isInterstitialReady(placementId: adUnitId);
      if (isReady) {
        await Anythink.showInterstitial(placementId: adUnitId);
      } else {
        print("插屏广告未准备好");
      }
    } catch (e) {
      print("显示插屏广告失败: $e");
    }
  }
}

然后,在你的主页面或其他需要显示广告的页面中调用这些方法:

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

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

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    AdManager.loadBannerAd();
    // 可以在适当的时候调用显示广告的方法
    // 例如在按钮点击事件中调用 AdManager.showInterstitialAd();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter AnyThink SDK 示例'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              '点击按钮显示插屏广告',
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                AdManager.showInterstitialAd();
              },
              child: Text('显示插屏广告'),
            ),
          ],
        ),
      ),
    );
  }
}

注意:以上代码只是一个简单的示例,实际项目中你可能需要更复杂的逻辑来处理广告的生命周期和错误处理。务必参考anythink_sdk的官方文档来获取最新的API和最佳实践。

回到顶部