Flutter广告开包插件flutter_openwrap_sdk的使用

Flutter广告开包插件flutter_openwrap_sdk的使用

本仓库包含OpenWrap SDK Flutter插件的源代码,使发布者能够通过OpenWrap SDK实现Flutter应用的变现。

2. 文档

要详细了解如何使用OpenWrap SDK Flutter插件,请访问官方OpenWrap Flutter插件文档

3. 报告改进/问题

如果您遇到任何问题或有改进建议,请在GitHub上打开一个issue。如需进一步查询,请联系您的PubMatic客户经理。


完整示例Demo

以下是使用flutter_openwrap_sdk插件的基本示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_openwrap_sdk/flutter_openwrap_sdk.dart';
import 'package:permission_handler/permission_handler.dart';

import 'screens/screens.dart';

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

const List<String> adType = [
  'Banner',
  'MREC Display',
  'Interstitial Display',
  'Interstitial Video',
  'Rewarded'
];

class MainScreen extends StatefulWidget {
  const MainScreen({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MainScreen> createState() => _MainScreenState();
}

class _MainScreenState extends State<MainScreen> {
  [@override](/user/override)
  void initState() {
    super.initState();

    // 设置日志级别为全部
    OpenWrapSDK.setLogLevel(POBLogLevel.all);
    _requestLocationPermission();
  }

  void _requestLocationPermission() async {
    const permission = Permission.location;
    await permission.request();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('PubMatic Flutter Sample App'),
        ),
        body: const MyListView(),
      ),
      debugShowCheckedModeBanner: false,
    );
  }
}

class MyListView extends StatelessWidget {
  const MyListView({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Container(
      height: MediaQuery.of(context).size.height,
      width: MediaQuery.of(context).size.width,
      color: Colors.grey[200],
      child: Padding(
        padding: const EdgeInsets.fromLTRB(15.0, 15.0, 12.0, 12.0),
        child: SingleChildScrollView(
          scrollDirection: Axis.vertical,
          child: Column(
            children: [
              for (var index in Iterable.generate(adType.length)) SubRow(index)
            ],
          ),
        ),
      ),
    );
  }
}

class SubRow extends StatelessWidget {
  final int adTypeIndex;
  const SubRow(this.adTypeIndex, {Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        switch (adTypeIndex) {
          case 0:
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => const OpenWrapBannerScreen()),
            );
            break;
          case 1:
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => const OpenWrapMRECDisplayScreen()),
            );
            break;
          case 2:
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => const OpenWrapInterstitialScreen()),
            );
            break;
          case 3:
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => const OpenWrapVideoInterstitialScreen()),
            );
            break;
          case 4:
            Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => const OpenWrapRewardedAdScreen()),
            );
            break;
        }
      },
      child: Column(crossAxisAlignment: CrossAxisAlignment.stretch, children: [
        Padding(
          padding: const EdgeInsets.fromLTRB(8.0, 0, 0, 0),
          child: ExcludeSemantics(
            child: Text(
              adType[adTypeIndex],
              style: const TextStyle(fontSize: 18),
            ),
          ),
        ),
        if (adTypeIndex + 1 != adType.length)
          Divider(
            thickness: 1.0,
            color: Colors.grey[300],
          )
      ]),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用flutter_openwrap_sdk(假设这是一个用于广告开包的插件)的示例代码。请注意,实际使用中的具体方法和参数可能会根据插件的最新版本有所不同,因此请参考官方文档以获取最新信息。

1. 添加依赖

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

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

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

2. 导入插件

在你需要使用广告开包功能的Dart文件中导入插件:

import 'package:flutter_openwrap_sdk/flutter_openwrap_sdk.dart';

3. 初始化SDK

通常在应用的入口文件(如main.dart)中初始化SDK,并配置必要的参数,例如广告ID、用户信息等。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化SDK
  await FlutterOpenwrapSdk.instance.init(
    appId: '你的应用ID',  // 替换为你的应用ID
    userId: '用户ID',      // 可选,如果有用户登录信息则提供
    // 其他初始化所需的参数...
  );

  runApp(MyApp());
}

4. 显示广告开包

在你希望显示广告开包的页面或组件中调用相关方法。假设FlutterOpenwrapSdk提供了一个showAdWrapper方法来显示广告:

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

class AdPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('广告页面'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 显示广告开包
            try {
              await FlutterOpenwrapSdk.instance.showAdWrapper(
                adUnitId: '你的广告单元ID',  // 替换为你的广告单元ID
                // 其他显示广告所需的参数...
              );
            } catch (e) {
              // 处理错误
              print('显示广告失败: $e');
            }
          },
          child: Text('显示广告'),
        ),
      ),
    );
  }
}

5. 处理回调(可选)

如果flutter_openwrap_sdk提供了回调接口,比如广告展示成功、点击、关闭等事件的回调,你可以通过设置监听器来处理这些事件:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化SDK
  final sdk = FlutterOpenwrapSdk.instance;
  await sdk.init(
    appId: '你的应用ID',
    userId: '用户ID',
    // 其他初始化所需的参数...
  );

  // 设置广告展示成功的回调
  sdk.setAdShowSuccessListener((adInfo) {
    print('广告展示成功: $adInfo');
  });

  // 设置广告点击的回调
  sdk.setAdClickListener((adInfo) {
    print('广告被点击: $adInfo');
  });

  // 设置广告关闭的回调
  sdk.setAdCloseListener((adInfo) {
    print('广告关闭: $adInfo');
  });

  runApp(MyApp());
}

注意事项

  • 请确保你已经在开发者平台上正确配置了广告单元ID和应用ID。
  • 处理广告展示失败的情况,确保用户体验不受影响。
  • 遵循广告平台的政策和指导原则,避免违规操作。

以上代码示例仅供参考,具体实现细节可能因flutter_openwrap_sdk插件的实际API而有所不同。务必查阅该插件的官方文档以获取最新和最准确的API信息。

回到顶部