القائمة الرئيسية

الصفحات

كيفية ارسال اشعارات بشكل مؤقت كل فتره في فلاتر | how to send notification schedule

كيفية ارسال اشعارات بشكل مؤقت كل فتره في فلاتر

كيفية ارسال اشعارات بشكل مؤقت كل فتره في فلاتر

عندما العمل على احد المشاريع قام العميل بطلب مني ارسال اشعارات كل 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 وتفعيل الخاصيه التي نريد تكرارها والمده التي نريد تكرار الامر بداخلها .


how to send notification schedule

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(),
          );
  }
}


مزيد من المقالات

تعليقات

التنقل السريع