Flutter通知管理插件flutter_cnotify_sdk的使用

发布于 1周前 作者 vueper 来自 Flutter

Flutter通知管理插件flutter_cnotify_sdk的使用

CNotify 允许你创建无限量的周期性通知,并且可以通过一个“无代码”界面进行安排,就像在Google日历中安排事件一样简单。更多关于CNotify的信息,可以访问其 网站,以及查看 文档(也提供西班牙语版本)。

要查看如何在Flutter应用中初始化SDK的详细分步指南,请参阅文档中的 SDK → Flutter 部分。

开始使用

让我们安装CNotify SDK,这样我们就可以在稍后在平台上设置我们的Flutter应用时接收通知。

flutter pub add flutter_cnotify_sdk

设置iOS和Android

在这个步骤中,你需要将Firebase项目与你的应用关联起来,并配置特定的iOS和Android设置。更多细节可以在 文档 中找到。

注意:文档指定了放置 google-services.jsonGoogleService-Info.plist 文件的正确位置。

初始化CNotify SDK

打开 lib/main.dart 文件或任何用于初始化应用依赖项的文件。重要的是尽早实例化SDK,以便快速订阅用户通知。记住,发送通知是我们项目中非常有效的沟通工具。

在我们的例子中,我们将通过修改 main 函数来初始化SDK,使其看起来像这样:

import 'package:flutter_cnotify_sdk/cnotify_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await CNotifySdk.init(testing: kDebugMode);
  runApp(const MyApp());
}

testing 参数允许你在设备上接收测试通知。对于开发环境,最好将其设置为 true。但请确保此值不会进入生产环境,因为它可能会导致测试通知被发送到你的应用的最终用户。

完整的 lib/main.dart 文件将如下所示:

import 'package:flutter/material.dart';
import 'package:flutter_cnotify_sdk/cnotify_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await CNotifySdk.init(testing: kDebugMode);
  runApp(const MyApp());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

示例代码

以下是一个完整的示例代码,展示了如何初始化和使用 flutter_cnotify_sdk 插件:

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

import 'package:flutter_cnotify_sdk/cnotify_sdk.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';

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

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    // Platform messages may fail, so we use a try/catch PlatformException.
    // We also handle the message potentially returning null.
    CNotifySdk.init(
      testing: true,
    );

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;

    setState(() {
      _platformVersion = 'TRUE';
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Text('Running on: $_platformVersion\n'),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用 flutter_cnotify_sdk 插件进行通知管理的 Flutter 代码示例。这个示例将展示如何初始化插件、注册设备以及处理接收到的通知。

首先,确保你已经在 pubspec.yaml 文件中添加了 flutter_cnotify_sdk 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_cnotify_sdk: ^latest_version  # 请替换为最新版本号

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

接下来,按照以下步骤在 Flutter 应用中使用 flutter_cnotify_sdk

1. 初始化插件

在你的应用的主文件(通常是 main.dart)中,初始化 flutter_cnotify_sdk 插件。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  CNotify.initialize(
    appId: 'YOUR_APP_ID', // 替换为你的应用ID
    appSecret: 'YOUR_APP_SECRET', // 替换为你的应用密钥
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter CNotify Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

2. 注册设备

在应用的某个合适位置(例如在用户登录后),注册设备以接收通知。

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    _registerDevice();
  }

  Future<void> _registerDevice() async {
    try {
      String deviceToken = await CNotify.registerDevice();
      print('Device registered successfully. Device Token: $deviceToken');
    } catch (e) {
      print('Failed to register device: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter CNotify Demo'),
      ),
      body: Center(
        child: Text('Checking for device registration...'),
      ),
    );
  }
}

3. 处理接收到的通知

要处理接收到的通知,你需要监听 CNotify 的通知事件。这通常在应用的主文件中进行。

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  CNotify.initialize(
    appId: 'YOUR_APP_ID',
    appSecret: 'YOUR_APP_SECRET',
  );

  // 监听通知点击事件
  CNotify.onMessageOpenedApp.listen((RemoteMessage message) {
    print('A new onMessageOpenedApp event came in!');
    print('Notification data: ${message.data}');
  });

  // 监听前台接收到的通知事件
  CNotify.onMessage.listen((RemoteMessage message) {
    print('A new onMessage event came in!');
    print('Notification data: ${message.data}');
  });

  runApp(MyApp());
}

4. 处理后台消息(可选)

如果你的应用需要在后台处理消息,你需要在你的 AppDelegate(iOS)和 MainApplicationMyFirebaseMessagingService(Android)中进行额外配置。由于这部分代码涉及到原生代码,这里只给出简要说明:

  • iOS: 在 AppDelegate.swiftAppDelegate.m 中添加处理后台消息的代码。
  • Android: 在 MainApplication.java 或创建一个新的 MyFirebaseMessagingService.java 来处理后台消息。

由于这些配置依赖于具体的原生开发环境,这里不提供详细代码。你可以参考 flutter_cnotify_sdk 的官方文档或 Flutter Firebase Messaging 的文档来获取更多信息。

总结

以上代码展示了如何在 Flutter 应用中使用 flutter_cnotify_sdk 插件进行通知管理的基本步骤。请确保替换 YOUR_APP_IDYOUR_APP_SECRET 为你的实际应用ID和密钥。此外,根据具体需求,你可能还需要进行更多的配置和处理。

回到顶部