如何在flutter和webapi中推送通知



我希望程序能够每分钟向服务器发送一个请求并返回一个列表:我的列表:[{"NoteId":"Id","Title":"Note Title","Description":"Notes Description","AtDateTime":"1/7/2021 10:10:15"}]

如果AtDateTime字段的值等于当前时间,则显示具有列表记录值的报警

我使用一个节点js来连接数据。请帮助我

我发现了一个可以定期在后台执行任务的解决方案
但每15分钟只发生一次

对于需要添加包的计划任务:workmanager

对于本地通知,添加包:flatter_local_notifications

dependencies:
flutter:
sdk: flutter
....
# Use with the Workmanger for background jobs headless execution.
workmanager: ^0.2.3
# Use with FlutterLocalNotificationsPlugin for local push notifications.
flutter_local_notifications: ^1.4.4+2

在以下位置添加此代码:->android->app->src->main->AndroidManifest.xml
<!-- Add below permission inside 'manifest' tag -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<!-- Add below permission inside 'application' tag -->
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
</intent-filter>
</receiver>

lib->main.dart
import 'package:flutter/material.dart'; 
import 'package:flutter_local_notifications/flutter_local_notifications.dart'; 
import 'package:workmanager/workmanager.dart'; 
void main() { 

// needed if you intend to initialize in the `main` function 
WidgetsFlutterBinding.ensureInitialized(); 
Workmanager.initialize(         
// The top level function, aka callbackDispatcher 
callbackDispatcher,         
// If enabled it will post a notification whenever 
// the task is running. Handy for debugging tasks 
isInDebugMode: true
); 
// Periodic task registration 
Workmanager.registerPeriodicTask( 
"2",        
//This is the value that will be 
// returned in the callbackDispatcher 
"simplePeriodicTask", 

// When no frequency is provided 
// the default 15 minutes is set. 
// Minimum frequency is 15 min. 
// Android will automatically change 
// your frequency to 15 min 
// if you have configured a lower frequency. 
frequency: Duration(minutes: 15), 
); 
runApp(MyApp()); 
} 
void callbackDispatcher() { 
Workmanager.executeTask((task, inputData) { 

// initialise the plugin of flutterlocalnotifications. 
FlutterLocalNotificationsPlugin flip = new FlutterLocalNotificationsPlugin(); 

// app_icon needs to be a added as a drawable 
// resource to the Android head project. 
var android = new AndroidInitializationSettings('@mipmap/ic_launcher'); 
var IOS = new IOSInitializationSettings(); 

// initialise settings for both Android and iOS device. 
var settings = new InitializationSettings(android, IOS); 
flip.initialize(settings); 
_showNotificationWithDefaultSound(flip); 
return Future.value(true); 
}); 
} 
Future _showNotificationWithDefaultSound(flip) async { 

// Show a notification after every 15 minute with the first 
// appearance happening a minute after invoking the method 
var androidPlatformChannelSpecifics = new AndroidNotificationDetails( 
'your channel id', 
'your channel name', 
'your channel description', 
importance: Importance.Max, 
priority: Priority.High 
); 
var iOSPlatformChannelSpecifics = new IOSNotificationDetails(); 

// initialise channel platform for both Android and iOS device. 
var platformChannelSpecifics = new NotificationDetails( 
androidPlatformChannelSpecifics, 
iOSPlatformChannelSpecifics 
); 
await flip.show(0, 'GeeksforGeeks', 
'Your are one step away to connect with GeeksforGeeks', 
platformChannelSpecifics, payload: 'Default_Sound'
); 
} 
class MyApp extends StatelessWidget { 
// This widget is the root of your application. 
@override 
Widget build(BuildContext context) { 
return MaterialApp( 
title: 'Geeks Demo', 
theme: ThemeData( 

// This is the theme 
// of your application. 
primarySwatch: Colors.green, 
), 
home: HomePage(title: "GeeksforGeeks"), 
); 
} 
} 
class HomePage extends StatefulWidget { 
HomePage({Key key, this.title}) : super(key: key); 
final String title; 
@override 
_HomePageState createState() => _HomePageState(); 
} 
class _HomePageState extends State<HomePage> { 
@override 
Widget build(BuildContext context) { 
return Scaffold( 
appBar: AppBar( 
title: Text(widget.title), 
), 
body: new Container(), 
); 
} 
} 

相关内容

  • 没有找到相关文章

最新更新