Flutter插件reaper_flutter_plugin使用指南
Flutter插件reaper_flutter_plugin使用指南
reaper_flutter_plugin
Reaper Flutter 插件项目。
开始使用
此项目是一个 Flutter 的插件包起点,属于一种专门包含 Android 和/或 iOS 平台特定实现代码的包。
如需了解如何开始使用 Flutter,请参阅 Flutter 官方文档,其中包含教程、示例、移动开发指南以及完整的 API 参考。
使用示例
以下是一个完整的示例代码,展示了如何在 Flutter 中使用 reaper_flutter_plugin
插件来请求不同类型的广告。
示例代码
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:reaper_flutter_plugin/callbacks/reaper_ad_callback.dart';
import 'package:reaper_flutter_plugin/reaper_flutter_plugin.dart';
import 'package:reaper_flutter_plugin/bean/reaper_init_sdk_android_bean.dart';
import 'package:reaper_flutter_plugin/bean/reaper_init_sdk_ios_bean.dart';
import 'package:reaper_flutter_plugin/bean/reaper_interaction_bean.dart';
import 'package:reaper_flutter_plugin/bean/reaper_reward_video_bean.dart';
import 'package:reaper_flutter_plugin/bean/reaper_splash_bean.dart';
import 'package:reaper_flutter_plugin/callbacks/reaper_reward_video_ad_callback.dart';
void main() {
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
home: MyApp(),
));
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
var reaperFlutterPlugin;
[@override](/user/override)
void initState() {
super.initState();
reaperFlutterPlugin = ReaperFlutterPlugin.instance;
initReaperSdk();
showSplashAd();
}
Future<void> initReaperSdk() async {
var reaperInitSdkBaseBean;
if (Platform.isAndroid) {
const RELEASE_APP_ID = "100015";
const RELEASE_APP_KEY = "3353bea731f341775a015ef3515864c2";
reaperInitSdkBaseBean = ReaperInitSdkAndroidBean(
appId: RELEASE_APP_ID, appKey: RELEASE_APP_KEY);
} else if (Platform.isIOS) {
const RELEASE_APP_ID = "100070";
const RELEASE_APP_KEY = "b0cc4ca0b3a0b0f6f7ca99f03010aa51";
reaperInitSdkBaseBean =
ReaperInitSdkIosBean(appId: RELEASE_APP_ID, appKey: RELEASE_APP_KEY);
}
await reaperFlutterPlugin.initReaperSdk(reaperInitSdkBaseBean);
}
Future<void> showSplashAd() async {
var reaperSplashBean;
var positionId;
if (Platform.isAndroid) {
positionId = "1559";
} else if (Platform.isIOS) {
positionId = "1925";
}
reaperSplashBean = ReaperSplashBean(positionId: positionId);
await reaperFlutterPlugin.requestSplashAd(reaperSplashBean);
}
Future<void> showInsertAd() async {
var positionId;
if (Platform.isAndroid) {
positionId = "1579";
} else if (Platform.isIOS) {
positionId = "1947"; //1746,1904,1947,1742
}
var reaperInsertBean = ReaperInteractionBean(
positionId: positionId, callBack: insertAdCallBack);
await reaperFlutterPlugin.requestInteractionAd(reaperInsertBean);
}
void insertAdCallBack(ReaperAdCallBack data) {
print("插屏广告回调方法: " + data.method!);
}
Future<void> showRewardVideoAd() async {
var reaperRewardVideoBean;
var positionId;
if (Platform.isAndroid) {
positionId = "1537";
} else if (Platform.isIOS) {
positionId = "1743";
}
/// 额外参数对象,将发送到您的服务器以验证奖励
var reaperRewardVideoExtraBean = ReaperRewardVideoExtraBean(
uid: "1156642",
rewardVideoType: 2,
taskId: "70",
taskAction: "rewardVideo4energy",
version: "3.42.0_debug",
adCode: "%%POS_ID%%",
adSrc: "%%AD_SRC%%");
var extra = jsonEncode(reaperRewardVideoExtraBean);
reaperRewardVideoBean = ReaperRewardVideoBean(
positionId: positionId, extra: extra, callBack: rewardVideoAdCallBack);
await reaperFlutterPlugin.requestRewardVideoAd(reaperRewardVideoBean);
}
void rewardVideoAdCallBack(
ReaperRewardVideoAdCallBack reaperRewardVideoAdCallBack) {
print("激励视频广告回调方法: " + reaperRewardVideoAdCallBack.method!);
if (reaperRewardVideoAdCallBack.method ==
ReaperRewardVideoAdCallBack.METHOD_ON_REWARD_VERIFY) {
print(
"奖励金额: ${reaperRewardVideoAdCallBack.rewardAmount}, "
"奖励名称: ${reaperRewardVideoAdCallBack.rewardName}, "
"奖励验证结果: ${reaperRewardVideoAdCallBack.rewardVerify}");
}
}
[@override](/user/override)
Widget build(BuildContext context) {
Widget getAdSource() {
return Center(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ElevatedButton(
onPressed: showInsertAd,
child: Text("展示插屏广告"),
),
ElevatedButton(
onPressed: showSplashAd,
child: Text("展示开屏广告"),
),
ElevatedButton(
onPressed: showRewardVideoAd,
child: Text("展示激励视频广告"),
),
],
),
));
}
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('广告测试')),
body: Center(
child: getAdSource(),
),
));
}
}
1 回复
更多关于Flutter插件reaper_flutter_plugin使用指南的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
reaper_flutter_plugin
是一个用于在 Flutter 应用中与 REAPER(一个数字音频工作站)进行交互的插件。它允许开发者在 Flutter 应用中控制 REAPER 的某些功能,如播放、暂停、录制、获取当前播放位置等。这个插件通常用于需要与音频处理或音乐制作相关的应用程序。
安装 reaper_flutter_plugin
首先,你需要在 pubspec.yaml
文件中添加 reaper_flutter_plugin
依赖:
dependencies:
flutter:
sdk: flutter
reaper_flutter_plugin: ^0.1.0 # 请根据实际情况使用最新版本
然后运行 flutter pub get
来安装插件。
基本使用
-
初始化插件
在使用插件之前,通常需要初始化它。你可以在
main.dart
中进行初始化:import 'package:reaper_flutter_plugin/reaper_flutter_plugin.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await ReaperFlutterPlugin.initialize(); runApp(MyApp()); }
-
控制播放
你可以使用插件来控制 REAPER 的播放、暂停和停止功能:
import 'package:reaper_flutter_plugin/reaper_flutter_plugin.dart'; class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('REAPER Flutter Plugin Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ ElevatedButton( onPressed: () async { await ReaperFlutterPlugin.play(); }, child: Text('Play'), ), ElevatedButton( onPressed: () async { await ReaperFlutterPlugin.pause(); }, child: Text('Pause'), ), ElevatedButton( onPressed: () async { await ReaperFlutterPlugin.stop(); }, child: Text('Stop'), ), ], ), ), ), ); } }
-
获取当前播放位置
你可以获取当前播放的位置(以秒为单位):
ElevatedButton( onPressed: () async { double position = await ReaperFlutterPlugin.getPlayPosition(); print('Current play position: $position seconds'); }, child: Text('Get Play Position'), ),
-
录制音频
你还可以使用插件来控制录制功能:
ElevatedButton( onPressed: () async { await ReaperFlutterPlugin.startRecording(); }, child: Text('Start Recording'), ), ElevatedButton( onPressed: () async { await ReaperFlutterPlugin.stopRecording(); }, child: Text('Stop Recording'), ),