كيفية ارسال اشعارات بشكل مؤقت كل فتره في فلاتر
عندما العمل على احد المشاريع قام العميل بطلب مني ارسال اشعارات كل 12 ساعه تقريبا يصل للمستخدم اشعار وبعد البحث وجدت اكثر من طريقة ولكن افضلهم كان مع استعامل الworkmanager وهو الذي سوف يكون مسؤول عن ارسال الاشعارات حتى في حال اغلاق التطبيق وفي مقالة اليوم سوف نشرح لكم كيف تقوم باستخدام workmanager مع الlocal notification في ارسال اشعارات للمستخدم كل فتره معينه .
المكتبات التي تحتاج لها وهيا workmanager و local notification
flutter_local_notifications: ^9.4.0
workmanager: ^0.4.1
how to send notification schedule
قمنا هو بكتابة الكود كامل بداخل صفحة الmain حيث قمنا بتفعيل الworkmanager بداخل البدء تشغيل التطبيق وتفعيل الاشعارات المحليه التي توجد بداخل التطبيق والcallbacktow مسؤوله عن ارسال الاشعارات اذا تحقق الشريط الخاص بالworkmanager بدون مشاكل كما هو موضح وبالنهايه قمنا بتفعيل الworkmanager وتفعيل الخاصيه التي نريد تكرارها والمده التي نريد تكرار الامر بداخلها .
main.dart
void callbacktow() {
final random = Random();
var url = Uri.parse('https://reqres.in/api/users/2');
Workmanager().executeTask((taskName, inputData) async {
if (taskName == 'uniqueKey') {
var response = await http.get(url);
Map dataComingFromTheServer = jsonDecode(response.body);
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
const AndroidNotificationDetails androidPlatformChannelSpecifics =
AndroidNotificationDetails('your channel id', 'your channel name',
importance: Importance.max,
priority: Priority.high,
showWhen: false);
const NotificationDetails platformChannelSpecifics =
NotificationDetails(android: androidPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0,
'تذكير',
'سبحان الله',
platformChannelSpecifics,
payload: 'item x');
}
return Future.value(true);
});
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
const IOSInitializationSettings initializationSettingsIOS =
IOSInitializationSettings();
const MacOSInitializationSettings initializationSettingsMacOS =
MacOSInitializationSettings();
const InitializationSettings initializationSettings = const InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsIOS,
macOS: initializationSettingsMacOS);
await flutterLocalNotificationsPlugin.initialize(
initializationSettings,
);
Workmanager().initialize(callbacktow, isInDebugMode: true);
Workmanager().registerPeriodicTask(
"1",
"uniqueKey",
frequency: const Duration(minutes: 15),
);
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return GetMaterialApp(
getPages: [
GetPage(name: '/2',page: ()=> ScreenTwo()),
GetPage(name: '/3',page: ()=> ScreenThree()),
GetPage(name: '/4',page: ()=> ScreenFour()),
],
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
home: ScreenOne(),
);
}
}
مزيد من المقالات
تعليقات
إرسال تعليق