Flutter本地通知插件notifly_flutter_ios的使用

Flutter本地通知插件notifly_flutter_ios的使用

Pub

notifly_flutter_iosnotifly_flutter 的 iOS 实现。

使用

该插件被推荐使用(endorsed),这意味着你可以像使用 notifly_flutter 一样正常使用它。当你这样做时,此包会自动包含在你的应用中。

接下来,我们将通过一个完整的示例来展示如何使用 notifly_flutter_ios 插件来实现本地通知功能。

示例代码

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 初始化 NotiflyFlutter
  final notifly = NotiflyFlutter();

  @override
  void initState() {
    super.initState();
    
    // 请求通知权限
    notifly.requestNotificationPermissions().then((granted) {
      if (granted) {
        print('Notification permissions granted.');
      } else {
        print('Notification permissions denied.');
      }
    });

    // 设置通知回调
    notifly.onNotificationReceived.listen((notification) {
      print('Received notification: ${notification.title}');
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('NotiflyFlutter 示例'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 创建并调度通知
              notifly.scheduleNotification(
                title: 'Hello',
                body: 'This is a scheduled notification.',
                schedule: NotiflyNotificationSchedule(
                  hour: 10,
                  minute: 30,
                  millisecond: 0,
                ),
              );
            },
            child: Text('发送通知'),
          ),
        ),
      ),
    );
  }
}

详细说明

  1. 导入库

    import 'package:flutter/material.dart';
    import 'package:notifly_flutter/notifly_flutter.dart';
    
  2. 初始化 NotiflyFlutter

    final notifly = NotiflyFlutter();
    
  3. 请求通知权限

    notifly.requestNotificationPermissions().then((granted) {
      if (granted) {
        print('Notification permissions granted.');
      } else {
        print('Notification permissions denied.');
      }
    });
    
  4. 设置通知回调

    notifly.onNotificationReceived.listen((notification) {
      print('Received notification: ${notification.title}');
    });
    
  5. 创建并调度通知

    notifly.scheduleNotification(
      title: 'Hello',
      body: 'This is a scheduled notification.',
      schedule: NotiflyNotificationSchedule(
        hour: 10,
        minute: 30,
        millisecond: 0,
      ),
    );
    

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

1 回复

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


notifly_flutter_ios 是一个用于在 Flutter 应用中显示本地通知的插件。它专门针对 iOS 平台进行了优化,提供了一种简单的方式来安排、显示和管理本地通知。以下是如何使用 notifly_flutter_ios 插件的详细步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  notifly_flutter_ios: ^1.0.0  # 请检查是否有最新版本

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

2. 配置 iOS 项目

在 iOS 项目中,你需要在 Info.plist 文件中添加以下内容以请求通知权限:

<key>NSLocalNotificationAlertStyle</key>
<string>alert</string>
<key>UIBackgroundModes</key>
<array>
    <string>remote-notification</string>
</array>

3. 初始化插件

在 Flutter 应用启动时初始化 notifly_flutter_ios 插件:

import 'package:notifly_flutter_ios/notifly_flutter_ios.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await NotiflyFlutterIos.initialize();
  runApp(MyApp());
}

4. 请求通知权限

在显示通知之前,你需要请求用户的通知权限:

import 'package:notifly_flutter_ios/notifly_flutter_ios.dart';

Future<void> requestNotificationPermission() async {
  final bool granted = await NotiflyFlutterIos.requestPermissions();
  if (granted) {
    print("Notification permission granted");
  } else {
    print("Notification permission denied");
  }
}

5. 安排本地通知

你可以使用 NotiflyFlutterIos 来安排本地通知。以下是一个简单的例子:

import 'package:notifly_flutter_ios/notifly_flutter_ios.dart';

Future<void> scheduleNotification() async {
  await NotiflyFlutterIos.scheduleNotification(
    id: 1,
    title: "Hello, Flutter!",
    body: "This is a local notification",
    payload: "notification_payload",
    scheduledDate: DateTime.now().add(Duration(seconds: 5)), // 5秒后触发
  );
}

6. 处理通知点击事件

你可以在应用启动时或在前台时监听通知的点击事件:

import 'package:notifly_flutter_ios/notifly_flutter_ios.dart';

void initNotificationListeners() {
  NotiflyFlutterIos.onNotificationClick.listen((payload) {
    print("Notification clicked with payload: $payload");
    // 处理通知点击逻辑
  });
}

7. 取消通知

你可以通过通知的 id 来取消已安排的通知:

import 'package:notifly_flutter_ios/notifly_flutter_ios.dart';

Future<void> cancelNotification(int id) async {
  await NotiflyFlutterIos.cancelNotification(id);
}

8. 其他功能

notifly_flutter_ios 还提供了其他功能,例如获取所有已安排的通知、清除所有通知等。你可以查阅插件的官方文档以获取更多信息。

示例完整代码

以下是一个完整的示例代码,展示如何在 Flutter 应用中使用 notifly_flutter_ios 插件:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await NotiflyFlutterIos.initialize();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Notifly Flutter iOS Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: requestNotificationPermission,
                child: Text('Request Notification Permission'),
              ),
              ElevatedButton(
                onPressed: scheduleNotification,
                child: Text('Schedule Notification'),
              ),
              ElevatedButton(
                onPressed: () => cancelNotification(1),
                child: Text('Cancel Notification'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Future<void> requestNotificationPermission() async {
  final bool granted = await NotiflyFlutterIos.requestPermissions();
  if (granted) {
    print("Notification permission granted");
  } else {
    print("Notification permission denied");
  }
}

Future<void> scheduleNotification() async {
  await NotiflyFlutterIos.scheduleNotification(
    id: 1,
    title: "Hello, Flutter!",
    body: "This is a local notification",
    payload: "notification_payload",
    scheduledDate: DateTime.now().add(Duration(seconds: 5)),
  );
}

Future<void> cancelNotification(int id) async {
  await NotiflyFlutterIos.cancelNotification(id);
}
回到顶部