كيفية ارسال اشعارات بشكل مؤقت كل فتره في فلاتر
عندما العمل على احد المشاريع قام العميل بطلب مني ارسال اشعارات كل 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(),
);
}
}
مزيد من المقالات