Push Notifications এবং Background Services

Mobile App Development - ফ্লাটার (Flutter) - Flutter এ Device Features Access করা
239

Flutter এ Push Notifications এবং Background Services ইন্টিগ্রেট করা আপনার অ্যাপ্লিকেশনকে আরো ইন্টারেকটিভ এবং ফাংশনাল করে তোলে। Push Notifications ব্যবহার করে আপনি ব্যবহারকারীদের কাছে গুরুত্বপূর্ণ আপডেট পাঠাতে পারেন, আর Background Services ব্যবহার করে অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে কিছু কাজ পরিচালনা করতে পারে, যেমন ডেটা সিঙ্ক করা বা লোকেশন ট্র্যাকিং।

Flutter এ Push Notifications এবং Background Services সেটআপ করা:

১. Push Notifications (Firebase Cloud Messaging - FCM):

Flutter এ Firebase Cloud Messaging (FCM) হলো Push Notifications ইমপ্লিমেন্ট করার একটি জনপ্রিয় পদ্ধতি। FCM ব্যবহার করে আপনি রিয়েল-টাইমে ব্যবহারকারীদের কাছে নোটিফিকেশন পাঠাতে পারেন।

FCM Setup এবং Integration:

ধাপ ১: Firebase Project তৈরি করা:

  1. Firebase Console এ যান এবং একটি নতুন প্রোজেক্ট তৈরি করুন।
  2. আপনার অ্যাপটি (iOS এবং Android) Firebase Project এর সাথে যুক্ত করুন।
  3. google-services.json (Android) এবং GoogleService-Info.plist (iOS) ফাইলগুলো আপনার Flutter প্রোজেক্টে যুক্ত করুন।

ধাপ ২: Flutter এ firebase_messaging প্লাগইন সেটআপ করা:

pubspec.yaml ফাইলে firebase_messaging প্লাগইন যুক্ত করুন:

dependencies:
  firebase_core: ^2.4.1
  firebase_messaging: ^14.6.5

Androidandroid/app/build.gradle ফাইলে নিচেরটি যোগ করুন:

implementation 'com.google.firebase:firebase-messaging'

AndroidAndroidManifest.xml ফাইলে FirebaseMessagingService এবং permission যোগ করুন:

<service android:name="com.google.firebase.messaging.FirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

ধাপ ৩: Flutter কোডে FCM সেটআপ করা:

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  // Background notification handler
  print("Handling a background message: ${message.messageId}");
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Push Notification Example')),
        body: NotificationPage(),
      ),
    );
  }
}

class NotificationPage extends StatefulWidget {
  @override
  _NotificationPageState createState() => _NotificationPageState();
}

class _NotificationPageState extends State<NotificationPage> {
  @override
  void initState() {
    super.initState();
    FirebaseMessaging.instance.getInitialMessage().then((message) {
      if (message != null) {
        print("New notification: ${message.notification?.title}");
      }
    });

    FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      print("Message received: ${message.notification?.title}");
    });

    FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
      print("Notification opened: ${message.notification?.title}");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(child: Text('Listen for notifications here!'));
  }
}

ব্যাখ্যা:

  • FirebaseMessaging.onBackgroundMessage: ব্যাকগ্রাউন্ডে মেসেজ প্রাপ্ত হলে এই হ্যান্ডলার কাজ করে।
  • FirebaseMessaging.onMessage: যখন অ্যাপটি ফোরগ্রাউন্ডে থাকে, তখন নোটিফিকেশন পাওয়া গেলে এটি ট্রিগার হয়।
  • FirebaseMessaging.onMessageOpenedApp: যখন নোটিফিকেশন থেকে অ্যাপটি খোলা হয়, তখন এটি কল হয়।

FCM কনফিগারেশন টিপস:

  • iOSInfo.plist ফাইলে Push Notifications এবং Background Modes সক্ষম করুন।
  • Androidnotification channel এবং অন্যান্য সেটিংস কনফিগার করুন, যাতে নোটিফিকেশন সঠিকভাবে প্রদর্শিত হয়।

২. Background Services (WorkManager):

Flutter এ WorkManager প্লাগইন ব্যবহার করে ব্যাকগ্রাউন্ডে কাজ পরিচালনা করা যায়, যেমন ডেটা সিঙ্ক করা, ব্যাকগ্রাউন্ড প্রসেসিং, বা নির্দিষ্ট ইন্টারভালে কাজ চালানো। এটি মূলত Android এর জন্য ব্যবহৃত হয়, এবং iOS এর জন্য background_fetch অথবা background_mode ব্যবহৃত হয়।

WorkManager সেটআপ করা:

ধাপ ১: WorkManager প্লাগইন ইন্সটল করা:

pubspec.yaml ফাইলে workmanager প্লাগইন যুক্ত করুন:

dependencies:
  workmanager: ^0.5.0

ধাপ ২: Android কনফিগারেশন করা:

android/app/src/main/AndroidManifest.xml ফাইলে পারমিশন এবং সার্ভিস যোগ করুন:

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<service android:name="be.tramckrijte.workmanager.WorkManagerService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="true"/>

ধাপ ৩: WorkManager ব্যবহার করে ব্যাকগ্রাউন্ড টাস্ক সেট করা:

import 'package:flutter/material.dart';
import 'package:workmanager/workmanager.dart';

void callbackDispatcher() {
  Workmanager().executeTask((task, inputData) {
    print("Background task executed: $task");
    return Future.value(true);
  });
}

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Workmanager().initialize(callbackDispatcher, isInDebugMode: true);
  Workmanager().registerPeriodicTask("1", "simplePeriodicTask",
      frequency: Duration(hours: 1));

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Background Services Example')),
        body: Center(child: Text('WorkManager Example')),
      ),
    );
  }
}

ব্যাখ্যা:

  • callbackDispatcher: এটি একটি কলব্যাক মেথড, যা ব্যাকগ্রাউন্ডে নির্দিষ্ট কাজ সম্পাদন করে।
  • registerPeriodicTask: নির্দিষ্ট ইন্টারভালে কাজ রেজিস্টার করে, যা ব্যাকগ্রাউন্ডে চলে।
  • initialize: এটি WorkManager ইনিশিয়ালাইজ করে এবং ব্যাকগ্রাউন্ড টাস্ক পরিচালনা করে।

iOS Background Services (background_fetch):

iOS এ ব্যাকগ্রাউন্ড টাস্কের জন্য background_fetch প্লাগইন ব্যবহার করা হয়। এটি আপনাকে নির্দিষ্ট ইন্টারভালে বা ইভেন্টে কাজ সম্পাদন করতে সহায়তা করে।

background_fetch প্লাগইন সেটআপ:

pubspec.yaml ফাইলে প্লাগইন যুক্ত করুন:

dependencies:
  background_fetch: ^1.0.0

iOSInfo.plist ফাইলে Background Modes এবং fetch মুডস কনফিগার করুন।

background_fetch উদাহরণ:

import 'package:flutter/material.dart';
import 'package:background_fetch/background_fetch.dart';

void backgroundFetchHeadlessTask(String taskId) async {
  print("[BackgroundFetch] Headless event received: $taskId");
  BackgroundFetch.finish(taskId);
}

void main() {
  runApp(MyApp());
  BackgroundFetch.registerHeadlessTask(backgroundFetchHeadlessTask);
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('iOS Background Fetch Example')),
        body: Center(child: Text('Background Fetch Example')),
      ),
    );
  }
}

ব্যাখ্যা:

  • BackgroundFetch.registerHeadlessTask: এটি একটি হেডলেস টাস্ক রেজিস্টার করে, যা ব্যাকগ্রাউন্ডে রান হয়।
  • backgroundFetchHeadlessTask: নির্দিষ্ট কাজ পরিচালনা করে, যা ব্যাকগ্রাউন্ড ফেচ ইভেন্ট ট্রিগার হলে কাজ করে।

Flutter এ Push Notifications এবং Background Services এর সেরা চর্চা:

  1. Proper Permission Handling: সবসময় AndroidManifest.xml এবং Info.plist ফাইলগুলোতে প্রয়োজনীয় পারমিশন যুক্ত করুন এবং ব্যবহারকারীদের সঠিকভাবে পারমিশন রিকোয়েস্ট করুন।
  2. Battery Optimization ওভাররাইড: ব্যাটারি অপ্টিমাইজেশন অপশন চেক করুন, কারণ অনেক ডিভাইস ব্যাটারি অপ্টিমাইজেশন এর মাধ্যমে ব্যাকগ্রাউন্ড কাজ বন্ধ করতে পারে।
  3. Notification Channels ব্যবহার করুন: Android এ নোটিফিকেশন চ্যানেল ব্যবহার করে নোটিফিকেশন কাস্টমাইজ করুন, যাতে ব্যবহারকারীরা তাদের পছন্দ অনুযায়ী সেটিংস পরিবর্তন করতে পারে।
  4. Debugging এবং Logging: ব্যাকগ্রাউন্ড টাস্ক এবং নোটিফিকেশন সেটআপের জন্য Flutter DevTools এবং Logcat ব্যবহার করে ডিবাগিং করুন।

উপসংহার:

Flutter এ Push Notifications এবং Background Services ইন্টিগ্রেট করার মাধ্যমে আপনি অ্যাপ্লিকেশনকে আরো ইন্টারেকটিভ এবং কার্যকরী করতে পারবেন। সঠিক প্লাগইন এবং Flutter এর Platform Channels ব্যবহার করে আপনার অ্যাপ্লিকেশনকে শক্তিশালী, রেসপন্সিভ, এবং ফিচার-সমৃদ্ধ করা সহজ।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...