Flutter插件momagic_flutter的使用详解

发布于 1周前 作者 eggper 最后一次编辑是 5天前 来自 Flutter

Flutter插件momagic_flutter的使用详解

momagic_flutter

momagic_flutter 是一个用于 Flutter 的插件项目。它是一个专门的插件包,包含针对 Android 和/或 iOS 平台的原生实现代码。

开始使用

此项目是 Flutter 插件包的起点,帮助开发者快速集成平台特定的功能。若要开始 Flutter 开发,请参考 Flutter 官方文档,其中提供了教程、示例、移动开发指南以及完整的 API 参考。


使用示例

以下是一个完整的示例,展示如何在 Flutter 应用中使用 momagic_flutter 插件。

示例代码

// ignore_for_file: library_private_types_in_public_api

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Home(title: 'HomePage'),
      routes: {
        'pageTwo': (context) => PageTwo(title: 'Page Two'),
      },
    );
  }
}

class Home extends StatefulWidget {
  final String title;
  const Home({super.key, required this.title});
  [@override](/user/override)
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  [@override](/user/override)
  void initState() {
    super.initState();
    initMethod();
  }

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: const Center(
        child: Text(
          'HomePage',
          style: TextStyle(color: Colors.green, fontSize: 20),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        autofocus: true,
        focusElevation: 5,
        child: const Icon(Icons.notifications),
        onPressed: () {
          Navigator.push(context,
              MaterialPageRoute(builder: (context) => const SecondRoute()));
        },
      ),
    );
  }

  void initMethod() async {
    // 初始化 iOS 配置(仅适用于 iOS)
    if (Platform.isIOS) {
      DATB.iOSInit(appId: "d7e40672e1d6bad8c3ef6ecb0291cf4ab8e11b87");
    }

    // 初始化 Android 配置
    DATB.androidInit();

    // 请求推送通知权限
    DATB.promptForPushNotifications();

    // 设置订阅者 ID
    DATB.setSubscriberId("79057172");

    // 监听 Token 收到事件
    DATB.shared.onTokenReceived((token) {
      print('Token >> $token');
    });

    // 监听推送通知收到事件
    DATB.shared.onNotificationReceived((payload) {
      print('Payload >> $payload');
    });

    // 监听推送通知打开事件
    DATB.shared.onNotificationOpened((data) {
      print('DeepLink >> $data');
      Navigator.push(context,
          MaterialPageRoute(builder: (context) => const SecondRoute()));
    });

    // 监听 WebView 打开事件
    DATB.shared.onWebView((landingUrl) {
      print('Landing URL >> $landingUrl');
      Navigator.push(context,
          MaterialPageRoute(builder: (context) => const SecondRoute()));
    });
  }
}

class PageTwo extends StatefulWidget {
  final String title;
  const PageTwo({super.key, required this.title});
  [@override](/user/override)
  _PageTwoState createState() => _PageTwoState();
}

class _PageTwoState extends State<PageTwo> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Text('Page Two'),
      ),
      floatingActionButton: FloatingActionButton(
        autofocus: true,
        focusElevation: 5,
        child: const Icon(Icons.notifications),
        onPressed: () {},
      ),
    );
  }
}

class SecondRoute extends StatelessWidget {
  const SecondRoute({super.key});
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Second Page'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: const Text('Go back!'),
        ),
      ),
    );
  }
}

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

1 回复

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


momagic_flutter 是一个用于 Flutter 应用的插件,主要用于集成移动广告功能。它可以帮助开发者在应用中展示广告,从而通过广告收入实现盈利。以下是对 momagic_flutter 插件的基本使用方法和探索步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  momagic_flutter: ^1.0.0  # 请根据实际情况使用最新版本

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

2. 初始化插件

在使用 momagic_flutter 之前,你需要在应用的启动时初始化插件。通常可以在 main.dart 文件中进行初始化:

import 'package:momagic_flutter/momagic_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 momagic_flutter
  await MoMagicFlutter.initialize(
    appId: 'YOUR_APP_ID',  // 替换为你的应用ID
  );
  
  runApp(MyApp());
}

3. 展示广告

momagic_flutter 支持多种广告类型,如横幅广告、插页式广告、激励视频广告等。以下是一些常见广告类型的展示方法:

横幅广告

import 'package:momagic_flutter/momagic_flutter.dart';

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

class _BannerAdWidgetState extends State<BannerAdWidget> {
  late BannerAd _bannerAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _bannerAd = BannerAd(
      adUnitId: 'YOUR_BANNER_AD_UNIT_ID',  // 替换为你的横幅广告单元ID
      size: AdSize.banner,
      listener: BannerAdListener(
        onAdLoaded: (Ad ad) => print('BannerAd loaded.'),
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          ad.dispose();
          print('BannerAd failed to load: $error');
        },
        onAdOpened: (Ad ad) => print('BannerAd opened.'),
        onAdClosed: (Ad ad) => print('BannerAd closed.'),
      ),
    );
    _bannerAd.load();
  }

  [@override](/user/override)
  void dispose() {
    _bannerAd.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Container(
      alignment: Alignment.center,
      child: AdWidget(ad: _bannerAd),
      width: _bannerAd.size.width.toDouble(),
      height: _bannerAd.size.height.toDouble(),
    );
  }
}

插页式广告

import 'package:momagic_flutter/momagic_flutter.dart';

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

class _InterstitialAdExampleState extends State<InterstitialAdExample> {
  InterstitialAd? _interstitialAd;

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

  void _loadInterstitialAd() {
    InterstitialAd.load(
      adUnitId: 'YOUR_INTERSTITIAL_AD_UNIT_ID',  // 替换为你的插页式广告单元ID
      request: AdRequest(),
      adLoadCallback: InterstitialAdLoadCallback(
        onAdLoaded: (InterstitialAd ad) {
          _interstitialAd = ad;
          _interstitialAd?.setFullScreenContentCallback(FullScreenContentCallback(
            onAdDismissedFullScreenContent: (InterstitialAd ad) {
              ad.dispose();
              _loadInterstitialAd();
            },
            onAdFailedToShowFullScreenContent: (InterstitialAd ad, AdError error) {
              ad.dispose();
              _loadInterstitialAd();
            },
          ));
        },
        onAdFailedToLoad: (LoadAdError error) {
          print('InterstitialAd failed to load: $error');
        },
      ),
    );
  }

  void _showInterstitialAd() {
    _interstitialAd?.show();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Interstitial Ad Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showInterstitialAd,
          child: Text('Show Interstitial Ad'),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!