Flutter原生功能测试插件native_test_2的使用

Flutter原生功能测试插件native_test_2的使用

native_test_2简介

native_test_2 是一个用于广告功能测试的 Flutter 插件。目前该插件仅支持安卓端。

安卓接入说明

在安卓端,可以通过以下方式引入插件依赖:

implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

注意:如果手动引入 openAD-2.5.6.aar 或其他类似文件时,可能会导致重复引用问题。因此,建议通过上述方式统一管理依赖。

此外,文档中提到的穿山甲 SDK(com.pangle.cn:mediation-sdk:6.2.1.7)可能无法直接使用,推荐通过 .aar 文件引入。具体穿山甲 SDK 的接入文档可以参考:
穿山甲安卓接入文档

对于 iOS 端的接入文档,请参考:
iOS 聚合 SDK 文档


开始使用

初始化项目

首先,确保已正确配置 pubspec.yaml 文件并安装插件:

dependencies:
  native_test_2: ^版本号

运行以下命令以安装依赖:

flutter pub get

示例代码

以下是完整的示例代码,演示如何使用 native_test_2 插件完成广告的注册、预加载和展示功能。

示例代码详解

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

import 'package:flutter/services.dart';
import 'package:native_test_2/native_test_2.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> {
  String _platformVersion = 'Unknown';
  final _nativeTest_2Plugin = NativeTest_2();

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

  /// 初始化平台状态
  Future<void> initPlatformState() async {
    String platformVersion;
    try {
      platformVersion = await _nativeTest_2Plugin.getPlatformVersion() ?? 
          'Unknown platform version';
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  /// 广告是否注册成功的标志
  bool registerAdResult = false;

  /// 展示广告的完整流程
  showAd() async {
    // 初始化广告流
    NativeTestStream.initAdStream(
      natuveTestRewardAdCallBack: NatuveTestRewardAdCallBack(
        onShow: () {
          print('flutter-onShow函数');
        },
        onClick: () {
          print('flutter-onClick函数');
        },
        onFail: (message) {
          print('flutter-onFail函数-----$message');
        },
        onClose: () {
          print('flutter-onClose函数');
        },
        onReward: () {
          print('flutter-onReward函数,奖励发放函数');
        },
        adInfo: (info) {
          print('flutter-info函数,${info}');
        },
        onCache: () {
          print('flutter-onCache函数');
          Future.delayed(const Duration(seconds: 2), () async {
            print('延迟执行');
            await _nativeTest_2Plugin.showAd();
          });
        },
        onUnReady: () {
          print('flutter-onUnReady函数');
        },
      ),
    );

    // 预加载广告
    await _nativeTest_2Plugin.loadAd(adCodeId: "2323541");
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: ListView(
          children: [
            // 显示当前平台版本
            Center(
              child: Text('Running on: $_platformVersion\n'),
            ),

            // 初始化广告
            ElevatedButton(
              onPressed: () async {
                registerAdResult = await _nativeTest_2Plugin.registerAd(
                  appId: "767881",
                  appName: "广告demo",
                  tanxAppKey: "",
                  channelName: "demoTest",
                );
                setState(() {});
              },
              child: const Text('初始化'),
            ),
            Text('初始化结果${registerAdResult ? "成功" : "失败"}'),

            // 预加载广告
            ElevatedButton(
              onPressed: () async {
                await _nativeTest_2Plugin.loadAd(adCodeId: "2323541");
              },
              child: const Text('预加载广告'),
            ),

            // 展示广告
            ElevatedButton(
              onPressed: () async {
                await _nativeTest_2Plugin.showAd();
              },
              child: const Text('展示广告'),
            ),

            // 测试完整流程
            ElevatedButton(
              onPressed: () async {
                showAd();
              },
              child: const Text('测试完整流程'),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter原生功能测试插件native_test_2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter原生功能测试插件native_test_2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


native_test_2 是一个用于在 Flutter 中进行原生功能测试的插件。它允许你在 Flutter 应用中测试原生代码(如 Android 和 iOS 平台代码)的功能。以下是如何使用 native_test_2 插件的基本步骤:

1. 添加依赖

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

dev_dependencies:
  native_test_2: ^0.0.1

然后运行 flutter pub get 来获取依赖。

2. 创建测试文件

test 目录下创建一个新的测试文件,例如 native_test.dart

3. 编写测试代码

在测试文件中,你可以编写测试代码来测试原生功能。以下是一个简单的示例:

import 'package:flutter_test/flutter_test.dart';
import 'package:native_test_2/native_test_2.dart';

void main() {
  test('Test native method', () async {
    // 初始化插件
    final nativeTest = NativeTest2();

    // 调用原生方法
    final result = await nativeTest.someNativeMethod();

    // 验证结果
    expect(result, equals('Expected Result'));
  });
}

4. 实现原生代码

在 Android 和 iOS 平台上实现原生方法。以下是如何在 Android 和 iOS 上实现 someNativeMethod 的示例。

Android

android/app/src/main/kotlin/com/example/your_app/MainActivity.kt 中:

import io.flutter.embedding.android.FlutterActivity
import io.flutter.plugin.common.MethodChannel

class MainActivity: FlutterActivity() {
    private val CHANNEL = "com.example.native_test_2"

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
            if (call.method == "someNativeMethod") {
                result.success("Expected Result")
            } else {
                result.notImplemented()
            }
        }
    }
}

iOS

ios/Runner/AppDelegate.swift 中:

import UIKit
import Flutter

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
        let nativeTestChannel = FlutterMethodChannel(name: "com.example.native_test_2",
                                                     binaryMessenger: controller.binaryMessenger)
        nativeTestChannel.setMethodCallHandler({
            (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
            if call.method == "someNativeMethod" {
                result("Expected Result")
            } else {
                result(FlutterMethodNotImplemented)
            }
        })

        GeneratedPluginRegistrant.register(with: self)
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
}

5. 运行测试

你可以使用以下命令来运行测试:

flutter test test/native_test.dart

6. 查看测试结果

测试运行后,你可以在终端中查看测试结果。如果测试通过,你会看到类似以下的输出:

00:00 +1: All tests passed!
回到顶部