ارسال الاشعارات للتطبيق بعد مدة معينه في فلاتر

ارسال الاشعارات للتطبيق بعد مدة معينه في فلاتر

ارسال الاشعارات للتطبيق بعد مدة معينه في فلاتر

في هذا المقال يعد استكمالا للدروس السابقه والذي شرحنا فيها التعامل مع الاشعارات باستخدام فلاتر بطريقة بسيطه جدا وهذا الدرس استكمالا لسلسلة دروس تصميم اشعار مخصص باستخدام flutter وفي هذا المقال سوف نشرح كيف تقوم بارسال الاشعار بعد مده معينه من التفعيل مثلا تريد ارسال اشعار بعد 5 ثواني من النقر على الاشعار سوف يصل بعد 5 ثواني ويمكنك تخصيص ايام يصل فيها او حتى تخصيص ساعات يصل فيها وسوف نتعرف على نقوم بتخصيص الاشعارات بشكل افضل في الدروس القادمه والامر بسيط جدا .


يتطلب البرنامج الفعال عبر الأنظمة الأساسية ما لا يقل عن 250 ساعة من الجهد من شركة تطوير التطبيقات ذات السمعة الطيبة عبر الأنظمة الأساسية من أجل إنتاجه.

إنها لحظة رائعة لإنشاء تطبيقات الهاتف المحمول حيث يمر السوق حاليًا بتحول رقمي. أنصح باستخدام مطور تطبيقات Flutter لإنشاء تطبيقات لمحبي iOS و Android في وقت واحد بدلاً من توظيف مطوري iOS و Android في الولايات المتحدة الأمريكية ومختلف بلدان العالم .

لا شك أن Flutter عبر الأنظمة الأساسية هي رائدة في مجال البرمجيات وصناعات تكنولوجيا المعلومات ، وسنرى المزيد منها قريبًا أيضًا وبالمناسبه اول اعمل لي كان باستخدام تقنية Flutter لذلك ما الذي يجعلك متردد من البدء بتعلمها !


البرمجة: لغة العصر الحديث

البرمجة هي عملية كتابة التعليمات البرمجية لإنشاء تطبيقات وبرامج حاسوبية. وهي مهارة مهمة في العصر الحديث، حيث أصبحت التكنولوجيا جزءًا لا يتجزأ من حياتنا اليومية.


توجد العديد من أنواع البرمجة المختلفة، بما في ذلك تطوير تطبيقات الويب والجوال وتطوير الألعاب وتطوير تطبيقات الأعمال. تختلف كل نوع من أنواع البرمجة عن الأخرى في أدواتها وتقنياتها.


شركات برمجة التطبيقات

هناك العديد من شركات برمجة التطبيقات التي تقدم خدمات تطوير التطبيقات للشركات والأفراد. تقدم هذه الشركات مجموعة متنوعة من الخدمات، بما في ذلك تصميم التطبيقات وتطويرها واختبارها ونشرها.


تطوير تطبيقات الويب والجوال

يتضمن تطوير تطبيقات الويب إنشاء تطبيقات تعمل على متصفحات الويب. تتميز تطبيقات الويب بأنها يمكن الوصول إليها من أي جهاز متصل بالإنترنت.


يتضمن تطوير تطبيقات الجوال إنشاء تطبيقات تعمل على الأجهزة المحمولة، مثل الهواتف الذكية والأجهزة اللوحية. تتميز تطبيقات الجوال بأنها سهلة الاستخدام ومناسبة للاستخدام في أي وقت وفي أي مكان.


تطوير التطبيقات

يشمل تطوير التطبيقات أي نوع من أنواع البرمجة التي تؤدي إلى إنشاء تطبيق أو برنامج حاسوبي. يمكن أن يكون هذا أي شيء من تطبيقات الويب والجوال إلى الألعاب إلى تطبيقات الأعمال.


مستقبل البرمجة

يتوقع أن يستمر الطلب على المبرمجين في النمو في المستقبل. وذلك لأن التكنولوجيا تستمر في التطور، ويصبح هناك حاجة إلى المزيد من الأشخاص لإنشاء وتطوير التطبيقات والبرامج الحاسوبية.


نصائح لتعلم البرمجة

إذا كنت مهتمًا بتعلم البرمجة، فهناك العديد من الموارد المتاحة لك. يمكنك العثور على دورات تدريبية عبر الإنترنت وموارد تعليمية مجانية.

How to send Notification to app after 5 seconds in Flutter


سوف تلاحظ اننا قمنا باضفة DateTime زيادة عن الكود السابق في المقالة السابقه لكي نرسل له مدة معينه وبعدها يتم ارسال الاشعار الى المستخدم بدون مشاكل وهنا قمنا بارسال مدة 5 ثواني حتى يتم ارسال الاشعار للمستخدم بعد الانتهاء من المده سوف يتم ارسال الاشعار للمستخدم بدون مشاكل ويمكنك تفعيل تنبيه يظهر للمستخدم عندما يقوم بالنقر على الاشعار يخبره انه سوف يصلك اشعار بعد 5 ثواني , وهذا الكود نفس الكود السابق ولكن مع زيادة امكانية لتحديد وقت لارسال الاشعار .


How to send Notification to app after 5 seconds in Flutter

ui.dart


import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:rxdart/subjects.dart';
import 'package:tfluttert/constants/constants.dart';
import 'package:tfluttert/pages/test.dart';
import 'package:timezone/data/latest.dart' as tz;
import 'package:timezone/timezone.dart' as tz;



class FullPage extends StatefulWidget {
  const FullPage({Key? key}) : super(key: key);

  @override
  State<FullPage> createState() => _FullPageState();
}

class _FullPageState extends State<FullPage> {

  @override
  void initState() {
    super.initState();
    // Initialization notification plugin
    NotificationApi.init();
    // listen notification is click ? if yes navigate to test page and send data
    listenNotification();
    // Initialization Tz .
    tz.initializeTimeZones();
  }

  void listenNotification ()=>
      NotificationApi.onNotifications.stream.listen((event)=>
          navToPush(context, TestPage(text: event!)));


  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child:
        Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            MaterialButton(
              color: Colors.blueAccent,
              onPressed: () =>
                NotificationApi.showNotification(title: 'AM', body: 'geecoders ishere !',payload:'GeeCoders'),
              child: const Text('Go to showNotification',style: TextStyle(color: Colors.white),),
            ),
            SizedBox(height: 20,),
            MaterialButton(
              color: Colors.blueAccent,
              onPressed: () {

                NotificationApi.showScheduleNotification(
                  title: 'AM',
                  body: 'send notification after 5 seconds',
                  payload: 'GeeCoders',
                  dateTime: DateTime.now().add(const Duration(seconds: 5)),
                );
                print(DateTime.now().add(const Duration(seconds: 5)));

              },
              child: const Text('Go to showScheduleNotification',style: TextStyle(color: Colors.white),),
            ),
          ],
        ),
      )
    );
  }
}


class NotificationApi {
  // define notification plugin
  static final _notification = FlutterLocalNotificationsPlugin();
  // onClick Notification ? and send Data .
  static final onNotifications = BehaviorSubject<String?>();

  static Future _notificationDetails() async {
    // channels .
    return const NotificationDetails(
      android: AndroidNotificationDetails(
        'channel id',
        'channel name',
        importance: Importance.max,
        priority: Priority.high,
        // ticker: 'ticker',
      ),
      iOS: IOSNotificationDetails(),
    );
  }

  static Future init({bool initSchedule = false}) async {
    // Initialization
    const android =  AndroidInitializationSettings('@mipmap/ic_launcher');
    const ios =  IOSInitializationSettings();
    const settings = InitializationSettings(android: android,iOS: ios);
    await _notification.initialize(
      settings,
      // on click notification .
      onSelectNotification: (payload) async {
        onNotifications.add(payload);
      },
    );
  }

  // show notification .
  static Future showNotification(
      {String? title,String? body,String? payload , int id=0}) async {
      _notification.show(id, title, body, await _notificationDetails() ,payload: payload);
  }

  static Future showScheduleNotification(
      {String? title,
        String? body,
        String? payload,
        int id=0 ,
        required DateTime dateTime
      }) async {
    _notification.zonedSchedule(
        id,
        title,
        body,
        tz.TZDateTime.from(dateTime, tz.local),
        await _notificationDetails() ,
        payload: payload,
        androidAllowWhileIdle: true,
        uiLocalNotificationDateInterpretation:
          UILocalNotificationDateInterpretation.absoluteTime,
    );
  }
}


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

تعليقات