Flutter插件vmax_flutter的使用方法

Flutter插件vmax_flutter的使用方法

VmaxFlutter SDK允许发布者展示各种各样的广告。

Flutter插件vmax_flutter开始使用

iOS前置条件

  • 使用Xcode 14.1或更高版本
  • 目标iOS 12.0或更高版本

Android前置条件

AndroidManifest.xml文件中添加以下条目:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-3940256099942544~3347511713" />

初始化VmaxFlutterManager

初始化VmaxFlutter SDK的第一步。发布者需要在发出广告请求之前初始化VmaxFlutterManager类。

首先需要在Vmax控制台注册并生成accountIdappIdsecretKey

在初始化VmaxFlutterManager之前,开发者需要先初始化VmaxFlutterUser并传递用户特定的定向信息。例如,用户ID、性别、年龄、城市、地区、国家、邮政编码及关键字等参数:

VmaxFlutterUser vmaxUser = VmaxFlutterUser.instance;
vmaxUser.setId("USER_ID");
vmaxUser.setGender("USER_GENDER");
vmaxUser.setAge("USER_AGE");
vmaxUser.setCity("USER_CITY");
vmaxUser.setRegion("USER_REGION");
vmaxUser.setCountry("USER_COUNTRY");
vmaxUser.setZipCode("USER_ZIPCODE");
vmaxUser.setKeywords(["USER_KEYWORD"]);

然后使用accountIdappIdsecretKey初始化VmaxFlutterManager,并设置相应的监听器以获取初始化状态:

VmaxFlutterManager.instance.initialize(accountId: ACCOUNT_ID, appId: APP_ID, secretKey: "SECRET_KEY", listener: InitializationStatusListener(
  onSuccess: (){
    print("VmaxManager Initialization Success");
  },
  onFailure: (){
    print("VmaxManager Initialization Failed");
  })
);

初始化VmaxFlutter库会验证appId,获取用户定向数据,并获取后续广告请求中使用的用户代理、IDFA和设备信息。

VmaxFlutterDevice

VmaxFlutterDevice类负责与设备相关的定向信息。SDK会在初始化过程中预取某些信息,如用户代理、IFA、IFA相关的用户限制、设备类型、制造商、型号、操作系统、操作系统版本、语言、运营商和连接类型。

开发者可以选择更新这些设备信息(可选):

VmaxFlutterDevice vmaxDevice = VmaxFlutterDevice.instance;
vmaxDevice.setMake("DEVICE_MAKE");
vmaxDevice.setModel("DEVICE_MODEL");
vmaxDevice.setOS("DEVICE_OS");
vmaxDevice.setOSVersion("DEVICE_OS_VERSION");
vmaxDevice.setPlatform(DEVICE_PLATFORM);
vmaxDevice.setMarketingName("DEVICE_MARKETING_NAME");

// 更新设备信息后,调用此方法以反映在广告请求中
vmaxDevice.updateVmaxDevice();

VmaxFlutterApplication

VmaxFlutterApplication类负责应用特定的定向信息。

开发者可以选择更新这些应用信息(可选):

VmaxFlutterApplication vmaxApplication = VmaxFlutterApplication.instance;
vmaxApplication.setCustomData({"CUSTOM_KEY":"CUSTOM_VALUE"});
vmaxApplication.setKeywords(["CUSTOM_KEYWORD"]);

// 更新应用信息后,调用此方法以反映在广告请求中
vmaxApplication.updateVmaxApplication();

创建广告空间

VmaxFlutterAdSpace代表一个预留用于显示单个广告的空间。开发者可以使用这个空间来展示各种广告。

要显示广告,你需要从Vmax控制台创建TAG_ID,然后使用它来实现广告空间的变现。

开发者需要监听VmaxFlutterAdSpaceListener,它告诉他们广告空间的当前状态。

创建VmaxFlutterAdSpace的步骤如下:

注意:在创建VmaxFlutterAdSpace之前,VmaxFlutterManagerInitializationStatusListener状态必须成功。

  • 通过提供tagId并注册VmaxFlutterAdSpaceListener来创建VmaxFlutterAdSpace实例:
VmaxFlutterAdSpace _adSpace = VmaxFlutterAdSpace(tagId: "TAG_ID", listener: VmaxFlutterAdSpaceListener(
    onAdReady: () {
      print("VmaxFlutterAdSpace onAdReady");
    },
    onAdRender: (){
      print("VmaxFlutterAdSpace onAdRender");
    },
    onAdError: () {
      print("VmaxFlutterAdSpace onAdError");
    },
    onAdClick: (){
      print("VmaxFlutterAdSpace onAdClick");
    })
);
  • 创建完VmaxFlutterAdSpace后,需要调用cacheAd()方法向Vmax服务器发送广告请求。
  • 当从VmaxFlutterAdSpaceListener接收到onAdReady回调时,使用VmaxWidget类,并将VmaxFlutterAdSpace对象传递给它们:
VmaxWidget(adSpace: _adSpace)

VmaxWidget是什么?

VmaxWidget是一个Flutter小部件,用于显示VmaxFlutterAdSpace

开发人员必须在显示小部件之前调用cacheAd()方法。否则,将抛出PlatformException

完整示例

以下是一个完整的示例代码,展示了如何使用vmax_flutter插件:

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

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 从Vmax仪表板获取以下值。
  int accountId = 0;
  int appId = 0;
  String secretKey = '';
  String tagId = '';

  VmaxFlutterAdSpace? _bannerAd1;

  bool isManagerLoaded = false;
  bool isAdReady = false;

  [@override](/user/override)
  void initState() {
    super.initState();
    if (accountId <= 0 || appId <= 0 || secretKey.isEmpty) {
      throw FlutterError.fromParts(<DiagnosticsNode>[
        ErrorSummary("AccountId, AppId & SecretKey can't be empty.")
      ]);
    } else {
      _loadVmaxManager();
    }
  }

  [@override](/user/override)
  void dispose() {
    super.dispose();
    _bannerAd1?.closeAd();
    _bannerAd1 = null;
  }

  void _loadVmaxManager() async {
    VmaxFlutterManager.instance.initialize(accountId: accountId, appId: appId, secretKey: secretKey, listener: InitializationStatusListener(
        onSuccess: (){
          isManagerLoaded = true;
          print("VmaxManager Initialization Success");
        },
        onFailure: (){
          print("VmaxManager Initialization Failed");
        })
    );
  }

  void _loadAd() async {
    _bannerAd1 = VmaxFlutterAdSpace(tagId: tagId, listener: VmaxFlutterAdSpaceListener(
      onAdReady: () {
        isAdReady = true;
        print("VmaxFlutterAdSpace onAdReady");
      },
      onAdRender: (){
        print("VmaxFlutterAdSpace onAdRender");
      },
      onAdRefresh: () {
        print("VmaxFlutterAdSpace onAdRefresh");
      },
      onAdError: () {
        print("VmaxFlutterAdSpace onAdError");
      },
      onAdClick: (){
        print("VmaxFlutterAdSpace onAdClick");
      },)
    );
    _bannerAd1?.cacheAd();
  }

  void _showAd() async {
    if (isManagerLoaded && isAdReady) {
      setState(() {});
    } else {
      throw FlutterError.fromParts(<DiagnosticsNode>[
        ErrorSummary("VmaxFlutterAdSpace failed to load the ad.")
      ]);
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Vmax Example App'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(onPressed: _loadAd, child: const Text("Cache Ad")),
              ElevatedButton(onPressed: _showAd, child: const Text("Show Ad")),
              const SizedBox(height: 10),
              if (isManagerLoaded && isAdReady)
                VmaxWidget(adSpace: _bannerAd1!)
              else
                const SizedBox(
                  width: 320,
                  height: 50,
                  child: Placeholder(),
                )
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter插件vmax_flutter的使用方法的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


关于vmax_flutter这个Flutter插件,由于它不是一个广为人知的官方或广泛使用的插件,具体细节和文档可能相对稀缺。不过,假设它是一个第三方插件,通常我们可以通过查阅其官方文档或仓库中的README文件来了解其使用方法和功能。

以下是一个假设性的示例,展示了如何在一个Flutter项目中集成并使用一个名为vmax_flutter的插件(请注意,这里的代码是基于假设的,实际使用时需要根据插件的真实API进行调整):

  1. 添加依赖

    首先,你需要在pubspec.yaml文件中添加vmax_flutter作为依赖项。

    dependencies:
      flutter:
        sdk: flutter
      vmax_flutter: ^x.y.z  # 替换为实际的版本号
    

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

  2. 导入插件

    在你需要使用该插件的Dart文件中导入它。

    import 'package:vmax_flutter/vmax_flutter.dart';
    
  3. 使用插件

    假设vmax_flutter插件提供了一个名为VMaxWidget的组件,你可以这样使用它:

    import 'package:flutter/material.dart';
    import 'package:vmax_flutter/vmax_flutter.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('VMax Flutter Plugin Demo'),
          ),
          body: Center(
            child: VMaxWidget(
              // 假设VMaxWidget接受一些参数,这里只是示例
              param1: 'value1',
              param2: 123,
              onEvent: (event) {
                // 处理事件回调
                print('Received event: $event');
              },
            ),
          ),
        );
      }
    }
    

注意

  • 上面的代码是一个假设性的示例,实际使用时需要根据vmax_flutter插件的真实API进行调整。
  • 如果vmax_flutter插件提供了初始化步骤或配置选项(例如需要在main.dart中初始化某个单例),你需要查阅插件的文档并按照指示进行操作。
  • 如果插件有特定的平台通道调用或需要原生代码支持,你可能还需要在ios/android/目录下进行额外的配置。

由于vmax_flutter不是一个广为人知的插件,如果上述假设性示例不符合你的需求,建议直接查阅该插件的官方文档或仓库中的README文件以获取准确的使用指南和API参考。如果插件没有提供足够的文档,你可能需要联系插件的维护者或查看其issue跟踪器以获取更多信息。

回到顶部