| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import 'package:custom_notification/custom_notification.dart';
- import 'package:electronic_assistant/module/talk/view.dart';
- import 'package:flutter_local_notifications/flutter_local_notifications.dart';
- import 'package:get/get_utils/src/platform/platform.dart';
- class NotificationUtil {
- NotificationUtil._();
- static String formatDuration(double seconds) {
- final duration = Duration(seconds: seconds.toInt());
- final hours = duration.inHours.toString().padLeft(2, '0');
- final minutes = (duration.inMinutes % 60).toString().padLeft(2, '0');
- final secs = (duration.inSeconds % 60).toString().padLeft(2, '0');
- return '$hours:$minutes:$secs';
- }
- static void showRecordNotification(
- int notificationId, bool isRecording, double recordDuration,
- {required String channelId, required String channelName}) {
- if (GetPlatform.isAndroid) {
- CustomNotification.showRecordNotification(
- notificationId, isRecording, formatDuration(recordDuration),
- channelId: channelId, channelName: channelName);
- }
- }
- static int _analyseNotificationId = 2000;
- static int getAnalyseNotificationId() {
- return _analyseNotificationId++;
- }
- static void showAnalyseSuccessNotification(String talkId) async {
- final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
- FlutterLocalNotificationsPlugin();
- const AndroidInitializationSettings initializationSettingsAndroid =
- AndroidInitializationSettings('@mipmap/ic_launcher');
- DarwinInitializationSettings initializationSettingsIOS =
- DarwinInitializationSettings(
- requestSoundPermission: true,
- requestBadgePermission: true,
- requestAlertPermission: true,
- onDidReceiveLocalNotification:
- (int id, String? title, String? body, String? payload) async {
- if (payload != null) {
- TalkPage.startById(payload);
- }
- });
- InitializationSettings initializationSettings = InitializationSettings(
- android: initializationSettingsAndroid,
- iOS: initializationSettingsIOS,
- );
- await flutterLocalNotificationsPlugin.initialize(
- initializationSettings,
- onDidReceiveNotificationResponse:
- (NotificationResponse notificationResponse) async {
- if (notificationResponse.payload != null) {
- TalkPage.startById(notificationResponse.payload!);
- }
- },
- );
- const AndroidNotificationDetails androidPlatformChannelSpecifics =
- AndroidNotificationDetails(
- 'talk_analyse_success',
- '谈话分析通知',
- channelDescription: '谈话分析成功',
- importance: Importance.max,
- priority: Priority.high,
- );
- // ios的通知
- const String darwinNotificationCategoryPlain = 'plainCategory';
- const DarwinNotificationDetails iOSPlatformChannelSpecifics =
- DarwinNotificationDetails(
- categoryIdentifier: darwinNotificationCategoryPlain,
- );
- const NotificationDetails platformChannelSpecifics = NotificationDetails(
- android: androidPlatformChannelSpecifics,
- iOS: iOSPlatformChannelSpecifics);
- await flutterLocalNotificationsPlugin.show(
- getAnalyseNotificationId(),
- '小听谈话分析完成',
- '老板,谈话分析已完成,快点击查看吧。',
- platformChannelSpecifics,
- payload: talkId,
- );
- }
- // static void showAnalyseResultNotification(
- // int notificationId, bool isSuccess, String talkId,
- // {required String channelId, required String channelName}) {
- // CustomNotification.showAnalyseResultNotification(
- // notificationId, isSuccess, talkId,
- // channelId: channelId, channelName: channelName);
- // }
- }
|