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

الصفحات

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

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

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

في هذا المقال يعد استكمالا للدروس السابقه والذي شرحنا فيها التعامل مع الاشعارات باستخدام فلاتر بطريقة بسيطه جدا وهذا الدرس استكمالا لسلسلة دروس تصميم اشعار مخصص باستخدام 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,
    );
  }
}


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

تعليقات

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