.NET MAUI তে Notifications এবং Background Tasks ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনে ব্যবহারকারীদের সাথে আরও ইন্টারঅ্যাক্টিভ এবং কার্যকরী অভিজ্ঞতা প্রদান করতে পারেন। Notifications ব্যবহারকারীকে একটি নির্দিষ্ট কাজের জন্য অবহিত করে এবং Background Tasks অ্যাপ্লিকেশন চলাকালীন পেছনে কাজ করতে দেয়, যেমন ডেটা সিঙ্ক্রোনাইজেশন, ফাইল ডাউনলোডিং, বা অ্যাপের আপডেট।
1. Notifications (Push Notifications)
Push Notifications হল সেই বিজ্ঞপ্তি যা আপনি ব্যবহারকারীর ডিভাইসে পাঠাতে পারেন, এমনকি অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে বা বন্ধ অবস্থায় থাকলেও। .NET MAUI তে Push Notifications সেটআপ করার জন্য আপনি Microsoft.Maui.Networking এবং অন্যান্য লাইব্রেরি ব্যবহার করতে পারেন।
1.1 Local Notifications (লোকাল নোটিফিকেশন)
লোকাল নোটিফিকেশনগুলি অ্যাপ্লিকেশন নিজেই তৈরি করে এবং ব্যবহারকারীর ডিভাইসে প্রদর্শিত হয়। এটি সাধারণত সেই সময়ে ব্যবহৃত হয় যখন অ্যাপটি একটিভ থাকে বা ফোরগ্রাউন্ডে থাকে।
Local Notification উদাহরণ:
using Microsoft.Maui.ApplicationModel;
public class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
var button = new Button { Text = "Send Notification" };
button.Clicked += OnNotificationClicked;
Content = new StackLayout
{
Children = { button }
};
}
private async void OnNotificationClicked(object sender, EventArgs e)
{
var notification = new NotificationRequest
{
Title = "Hello, .NET MAUI!",
Body = "This is a local notification example.",
NotificationId = 100
};
await NotificationCenter.Current.Show(notification);
}
}
এখানে, NotificationRequest ব্যবহার করে একটি লোকাল নোটিফিকেশন তৈরি করা হয়েছে, যা ব্যবহারকারীকে টাইটেল এবং বডি প্রদর্শন করবে।
1.2 Push Notifications (পুশ নোটিফিকেশন)
পুশ নোটিফিকেশনগুলি সাধারণত একটি সার্ভার থেকে পাঠানো হয় এবং ব্যবহারকারীর ডিভাইসে প্রদর্শিত হয়। এর জন্য আপনি Firebase Cloud Messaging (FCM) অথবা Azure Notification Hub ব্যবহার করতে পারেন।
FCM বা Azure Notification Hub সেটআপ করার জন্য আপনাকে:
- API Key তৈরি করতে হবে।
- Firebase বা Azure অ্যাকাউন্ট সেটআপ করতে হবে।
Firebase Push Notification উদাহরণ:
- Firebase Console থেকে একটি প্রজেক্ট তৈরি করুন এবং আপনার অ্যাপের জন্য Server Key নিন।
- Firebase SDK ইনস্টল করুন এবং পুশ নোটিফিকেশন সেটআপ করুন।
using Firebase.CloudMessaging;
public class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
// Firebase Messaging configuration
Firebase.Messaging.FirebaseMessaging.Instance.SubscribeToTopic("general");
Firebase.Messaging.FirebaseMessaging.Instance.OnMessageReceived += (sender, args) =>
{
var notification = args.Message;
DisplayAlert("Push Notification", notification.Notification.Body, "OK");
};
}
}
এখানে, Firebase Cloud Messaging ব্যবহার করে অ্যাপ্লিকেশনে পুশ নোটিফিকেশন রিসিভ করা হচ্ছে।
2. Background Tasks
Background Tasks হল এমন কাজ যা অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে চলতে থাকে এবং ডিভাইসের হালনাগাদ কাজ সম্পাদন করে, যেমন ডেটা সিঙ্ক্রোনাইজেশন, ফাইল আপলোড/ডাউনলোড বা অ্যাপের তথ্য আপডেট করা।
2.1 Background Services in .NET MAUI
.NET MAUI তে Background Tasks পরিচালনা করার জন্য আপনি WorkManager বা Background Services ব্যবহার করতে পারেন। ব্যাকগ্রাউন্ডে কাজ করতে সাধারণত Android বা iOS এর জন্য নির্দিষ্ট কাজগুলো করার জন্য আপনাকে কিছু বিশেষ লাইব্রেরি ব্যবহার করতে হয়।
2.2 WorkManager (Android)
Android এর জন্য WorkManager ব্যবহার করে ব্যাকগ্রাউন্ড টাস্কগুলো সম্পাদন করা যায়।
WorkManager উদাহরণ:
- WorkManagerService:
using AndroidX.Work;
public class MyWorker : Worker
{
public MyWorker(Context context, WorkerParameters workerParams) : base(context, workerParams)
{
}
public override Result DoWork()
{
// Background task logic (e.g., sync data, download file)
return Result.InvokeSuccess();
}
}
- Enqueue Work:
using AndroidX.Work;
public void StartBackgroundTask()
{
var workRequest = OneTimeWorkRequest.Builder.From<MyWorker>().Build();
WorkManager.GetInstance(Application.Context).Enqueue(workRequest);
}
এখানে, OneTimeWorkRequest ব্যবহার করে একবার কাজটি ব্যাকগ্রাউন্ডে চালানো হচ্ছে।
2.3 Task.Run (iOS and Windows)
iOS এবং Windows এর জন্য ব্যাকগ্রাউন্ডে কাজ করতে আপনি Task.Run বা অন্যান্য ব্যাকগ্রাউন্ড থ্রেড ব্যবহার করতে পারেন।
public async void StartBackgroundTask()
{
await Task.Run(() =>
{
// Perform some background task like syncing data or downloading files
});
}
এখানে, Task.Run ব্যবহার করে অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে কাজ করা হচ্ছে।
3. Background Tasks and Permissions
Background Tasks চালানোর জন্য আপনাকে কিছু বিশেষ পারমিশন প্রয়োজন হতে পারে, যেমন Location বা Network পারমিশন।
iOS:
- iOS এ ব্যাকগ্রাউন্ডে কাজ করার জন্য Background Fetch বা Location Services পারমিশন প্রয়োজন।
Android:
- Android এ ব্যাকগ্রাউন্ডে কাজ চালানোর জন্য
android.permission.FOREGROUND_SERVICEপারমিশন প্রয়োজন।
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
Windows:
- Windows এ আপনি Background Task API ব্যবহার করে কাজ পরিচালনা করতে পারেন, তবে নির্দিষ্ট ডিভাইসের জন্য কিছু পারমিশন প্রয়োজন হতে পারে।
সারাংশ:
- Notifications: .NET MAUI তে আপনি Local Notifications এবং Push Notifications ব্যবহার করতে পারেন।
NotificationCenterAPI এর মাধ্যমে লোকাল নোটিফিকেশন তৈরি এবং পাঠানো হয়, আর Firebase বা Azure Notification Hub এর মাধ্যমে পুশ নোটিফিকেশন পাঠানো হয়। - Background Tasks: ব্যাকগ্রাউন্ড টাস্কগুলি Android এবং iOS এ WorkManager বা Task.Run এর মাধ্যমে পরিচালনা করা হয়। এতে আপনি ডেটা সিঙ্ক্রোনাইজেশন, ফাইল ডাউনলোডিং এবং অন্যান্য ব্যাকগ্রাউন্ড কাজ সম্পাদন করতে পারেন।
Local Notifications এবং Push Notifications হলো দুটি প্রধান ধরনের নোটিফিকেশন যা মোবাইল অ্যাপ্লিকেশনে ব্যবহৃত হয়। তারা ব্যবহারকারীদের তথ্য প্রদান, অনুস্মারক পাঠানো বা অ্যাপ্লিকেশন থেকে ইভেন্ট সম্পর্কে জানাতে সাহায্য করে। .NET MAUI তে এই নোটিফিকেশনগুলো সেটআপ এবং ব্যবহার করা যায়।
1. Local Notifications:
Local Notifications হল এমন নোটিফিকেশন যা অ্যাপ্লিকেশন নিজে থেকেই ট্রিগার করে, অর্থাৎ ব্যবহারকারী যখন অ্যাপ ব্যবহার করছেন না, তবুও অ্যাপটি নির্দিষ্ট সময় বা নির্দিষ্ট কার্যকলাপের জন্য ব্যবহারকারীকে নোটিফাই করতে পারে।
Local Notification এর কাজ:
- Device Side: Local notifications ডিভাইসের নিজস্ব API ব্যবহার করে, অর্থাৎ এটি সার্ভার থেকে আসে না, এটি শুধু আপনার অ্যাপ্লিকেশন থেকে তৈরি হয়।
- Trigger: একটি নির্দিষ্ট সময় বা ইভেন্ট ঘটলে, যেমন: একটি রিমাইন্ডার সেট করা, বিশেষ কোনো সময়ের মধ্যে বা নির্দিষ্ট কোনো কাজের জন্য নোটিফিকেশন পাঠানো।
- Usage: এটি সাধারণত সময়নিষ্ঠ বা কাস্টমাইজড রিমাইন্ডার বা ইভেন্টগুলির জন্য ব্যবহৃত হয়। যেমন: অ্যাপ্লিকেশন থেকে নোটিফিকেশন পাঠানো, যখন ব্যবহারকারী নির্দিষ্ট কোনো সময়ের জন্য অবহেলিত থাকে বা কিছু নির্দিষ্ট কার্যকলাপ ঘটবে।
Local Notification তৈরি করার উদাহরণ (.NET MAUI):
using Microsoft.Maui.Controls;
using Microsoft.Maui.Essentials;
public class LocalNotificationPage : ContentPage
{
public LocalNotificationPage()
{
var notifyButton = new Button
{
Text = "Send Local Notification"
};
notifyButton.Clicked += async (sender, e) =>
{
var notification = new NotificationRequest
{
NotificationId = 1,
Title = "Reminder",
Body = "Don't forget to check your tasks!",
Schedule = DateTime.Now.AddSeconds(10) // Schedule for 10 seconds later
};
await NotificationCenter.Current.ScheduleNotificationAsync(notification);
};
Content = new StackLayout
{
Children = { notifyButton }
};
}
}
এখানে, NotificationRequest ব্যবহৃত হচ্ছে একটি local notification তৈরি করতে, যা 10 সেকেন্ড পর প্রদর্শিত হবে।
2. Push Notifications:
Push Notifications হল এমন নোটিফিকেশন যা একটি সার্ভার থেকে পাঠানো হয় এবং এটি ব্যবহারকারীর ডিভাইসে দূরবর্তীভাবে (remote) পৌঁছায়। Push notification প্রেরণ করার জন্য একটি push notification service (যেমন Firebase Cloud Messaging বা Apple Push Notification Service) ব্যবহার করা হয়।
Push Notification এর কাজ:
- Server Side: Push notifications সার্ভার থেকে পাঠানো হয়। অ্যাপ্লিকেশনটি একটি নির্দিষ্ট সার্ভিস (যেমন Firebase) এর মাধ্যমে নোটিফিকেশন পায়।
- Trigger: সার্ভারটি একটি নির্দিষ্ট ইভেন্ট বা কার্যকলাপের জন্য নোটিফিকেশন পাঠায়। যেমন: নতুন মেসেজ, অফার, বিজ্ঞাপন ইত্যাদি।
- Usage: এটি ব্যবহারকারীর অ্যাপ্লিকেশনটি খোলা না থাকা অবস্থাতেও গুরুত্বপূর্ণ আপডেট বা তথ্য পৌঁছানোর জন্য ব্যবহৃত হয়।
Push Notification পাঠানোর উদাহরণ:
Push notification পাঠানোর জন্য, আপনি সাধারণত একটি cloud-based service (যেমন Firebase) ব্যবহার করবেন। এখানে Firebase Cloud Messaging (FCM) এর উদাহরণ দেখানো হলো।
- Firebase সেটআপ:
- Firebase এ আপনার অ্যাপ্লিকেশন নিবন্ধন করুন।
- Firebase Cloud Messaging (FCM) সক্রিয় করুন।
- Push Notification পাঠানোর কোড (.NET MAUI):
using Firebase.CloudMessaging;
public class PushNotificationService
{
public async Task SendPushNotificationAsync(string token, string title, string body)
{
var message = new
{
to = token, // Device token
notification = new
{
title = title,
body = body
}
};
var jsonMessage = JsonConvert.SerializeObject(message);
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://fcm.googleapis.com/fcm/send"),
Content = new StringContent(jsonMessage, Encoding.UTF8, "application/json")
};
// Add Firebase Server Key to Authorization header
request.Headers.Add("Authorization", "key=YOUR_SERVER_KEY");
using (var client = new HttpClient())
{
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
}
}
}
এখানে, আমরা Firebase Cloud Messaging API ব্যবহার করে একটি push notification পাঠাচ্ছি। এটি সরাসরি নির্দিষ্ট device token এ নোটিফিকেশন পাঠাবে।
Local এবং Push Notifications এর মধ্যে পার্থক্য:
| পার্থক্য | Local Notification | Push Notification |
|---|---|---|
| উৎস | অ্যাপ্লিকেশন নিজে থেকেই নোটিফিকেশন তৈরি করে। | সার্ভার থেকে একটি রিমোট সিস্টেম (যেমন Firebase) এর মাধ্যমে পাঠানো হয়। |
| প্ল্যাটফর্ম | ডিভাইসের নিজস্ব API ব্যবহার করে। | সার্ভারের মাধ্যমে এবং তৃতীয় পক্ষের API যেমন FCM, APNS ব্যবহার করে। |
| ইন্টারঅ্যাকশন | নির্দিষ্ট সময় বা ইভেন্টে ট্রিগার হয়। | সার্ভার দ্বারা নির্দিষ্ট ইভেন্টের ভিত্তিতে ট্রিগার হয়। |
| ব্যবহার | সময়নিষ্ঠ কাজের জন্য যেমন রিমাইন্ডার বা কাস্টম অ্যাপ্লিকেশন ইভেন্ট। | ব্যবহারকারীদের সাথে যোগাযোগ রক্ষায়, যেমন নতুন মেসেজ, অফার ইত্যাদি। |
সারাংশ:
- Local Notifications ডিভাইসের নিজস্ব প্ল্যাটফর্মে ব্যবহৃত হয় এবং ব্যবহারকারীর নির্দিষ্ট সময় বা ইভেন্ট অনুযায়ী নোটিফিকেশন পাঠানো হয়। এটি সাধারণত অ্যাপ্লিকেশনের নিজের কন্ট্রোলের মধ্যে থাকে এবং ব্যাকগ্রাউন্ডে কাজ করতে পারে।
- Push Notifications সার্ভার থেকে পাঠানো হয় এবং এটি এমন নোটিফিকেশন যা সার্ভিসের মাধ্যমে ডিভাইসে পাঠানো হয়, এমনকি অ্যাপ্লিকেশনটি বন্ধ থাকলেও। Push notifications ব্যবহারকারীর সাথে নিরবচ্ছিন্ন যোগাযোগ রক্ষার জন্য অনেক বেশি উপকারী, যেমন নতুন মেসেজ বা গুরুত্বপূর্ণ আপডেট জানানো।
.NET MAUI তে উভয় ধরনের নোটিফিকেশন ব্যবহারের জন্য প্রয়োজনীয় API গুলি সরবরাহ করা হয় এবং আপনাকে প্ল্যাটফর্ম বিশেষ কনফিগারেশন করতে হতে পারে (যেমন Firebase বা APNS ব্যবহার)।
Firebase Cloud Messaging (FCM) একটি শক্তিশালী সার্ভিস যা অ্যাপ্লিকেশনে রিয়েল-টাইম নোটিফিকেশন পাঠানোর জন্য ব্যবহৃত হয়। .NET MAUI এ FCM ইনটিগ্রেট করার মাধ্যমে আপনি মোবাইল অ্যাপ্লিকেশনগুলিতে পুশ নোটিফিকেশন পাঠাতে পারেন। FCM বিভিন্ন ধরনের নোটিফিকেশন সমর্থন করে, যেমন টেক্সট নোটিফিকেশন, ডাটা নোটিফিকেশন, এবং এপ্লিকেশন-বেসড নোটিফিকেশন।
এখানে .NET MAUI অ্যাপ্লিকেশনে Firebase Cloud Messaging (FCM) ইন্টিগ্রেট করার জন্য ধাপে ধাপে গাইড দেওয়া হয়েছে।
১. Firebase Console Setup
প্রথমে আপনাকে Firebase Console থেকে একটি প্রজেক্ট তৈরি করতে হবে এবং FCM সক্রিয় করতে হবে।
Firebase Project Setup:
- Firebase Console (https://console.firebase.google.com) এ যান এবং একটি নতুন প্রজেক্ট তৈরি করুন।
- প্রজেক্ট তৈরি হলে, Cloud Messaging ট্যাব থেকে FCM সক্রিয় করুন।
- Server key এবং Sender ID গ্রহণ করুন, যেগুলি পরবর্তীতে .NET MAUI অ্যাপ্লিকেশনে ব্যবহার করা হবে।
২. Firebase SDK এবং Dependencies ইনস্টলেশন
.NET MAUI অ্যাপ্লিকেশনে Firebase Cloud Messaging (FCM) ব্যবহার করতে, NuGet প্যাকেজ ইনস্টল করতে হবে।
Firebase SDK এর জন্য প্রয়োজনীয় প্যাকেজ:
- Firebase.CloudMessaging প্যাকেজ ইনস্টল করতে হবে।
- Firebase SDK এর NuGet প্যাকেজ ইনস্টল করতে:
Firebase.MessagingবাXamarin.Firebase.Messagingপ্যাকেজ ইনস্টল করুন (যেহেতু .NET MAUI সরাসরি Firebase Messaging সমর্থন করে না, তাই Xamarin ফ্রেমওয়ার্কের কিছু প্যাকেজ ব্যবহার করা হতে পারে)।
৩. Android এবং iOS প্ল্যাটফর্ম কনফিগারেশন
Firebase Cloud Messaging ব্যবহার করতে হলে, আপনার Android এবং iOS প্ল্যাটফর্মে কিছু কনফিগারেশন করতে হবে।
Android Configuration:
- google-services.json ফাইলটি Firebase Console থেকে ডাউনলোড করুন এবং এটি আপনার Android প্রজেক্টের
Resourcesফোল্ডারে যুক্ত করুন। - AndroidManifest.xml ফাইলে Firebase এবং FCM এর জন্য কনফিগারেশন যোগ করুন:
<service android:name="com.google.firebase.messaging.FirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notification"/>
iOS Configuration:
- GoogleService-Info.plist ফাইলটি Firebase Console থেকে ডাউনলোড করুন এবং এটি আপনার iOS প্রজেক্টে যুক্ত করুন।
- AppDelegate.cs ফাইলে Firebase এবং FCM কনফিগারেশন যোগ করুন:
using Firebase.CloudMessaging;
using Firebase.Core;
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
FirebaseApp.Configure();
Messaging.SharedInstance.Delegate = this;
return base.FinishedLaunching(app, options);
}
৪. FCM Token এবং Notification Handling
Firebase Cloud Messaging ব্যবহার করার জন্য আপনাকে FCM Token পেতে হবে, যা সঠিক ডিভাইসে পুশ নোটিফিকেশন পাঠানোর জন্য ব্যবহৃত হবে।
Firebase Messaging Service:
FCM ব্যবহার করতে হলে, একটি FirebaseMessagingService ক্লাস তৈরি করতে হবে যা পুশ নোটিফিকেশন হ্যান্ডেল করবে। এই ক্লাসটি Android এবং iOS প্ল্যাটফর্মে পৃথকভাবে কনফিগার করতে হবে।
using Firebase.Messaging;
public class MyFirebaseMessagingService : FirebaseMessagingService
{
// Override to handle messages
public override void OnMessageReceived(RemoteMessage message)
{
// Process the message here (Notification, Data)
var notification = message.GetNotification();
if (notification != null)
{
// Handle the notification message
// Show a notification to the user, update the UI, etc.
}
}
// Called when the FCM Token is refreshed
public override void OnNewToken(string token)
{
// Send token to your server for pushing notifications
Console.WriteLine($"New FCM Token: {token}");
}
}
এখানে:
- OnMessageReceived: যখন একটি পুশ নোটিফিকেশন আসে, তখন এই মেথডটি কল হবে এবং আপনি নোটিফিকেশনটি প্রক্রিয়া করতে পারবেন।
- OnNewToken: যদি FCM টোকেনটি রিফ্রেশ করা হয়, তবে এই মেথডটি কল হবে। আপনি এই টোকেনটি আপনার সার্ভারে পাঠাতে পারেন।
৫. Sending Push Notification from Firebase Console
Firebase Console ব্যবহার করে আপনি সহজেই Push Notifications পাঠাতে পারেন।
- Firebase Console এ গিয়ে Cloud Messaging ট্যাব সিলেক্ট করুন।
- একটি নতুন Notification তৈরি করুন এবং তারপরে টার্গেট ডিভাইস নির্বাচন করুন।
- Message Text এবং অন্যান্য তথ্য পূর্ণ করুন এবং নোটিফিকেশন পাঠান।
৬. Handling Push Notifications
মোবাইল অ্যাপ্লিকেশনে পুশ নোটিফিকেশন গ্রহণ করার জন্য FirebaseMessagingService এবং OnMessageReceived মেথড ব্যবহার করা হয়। আপনি ব্যবহারকারীর অ্যাপের UI তে নোটিফিকেশন দেখানোর জন্য Local Notification পাঠাতে পারেন অথবা কিছু ডাটা প্রসেস করতে পারেন।
৭. Sending Push Notification Programmatically (Server Side)
Firebase এর API ব্যবহার করে আপনি সার্ভার থেকে প্রোগ্রামেটিকালি পুশ নোটিফিকেশন পাঠাতে পারেন।
Firebase HTTP v1 API:
আপনি Firebase HTTP v1 API ব্যবহার করে FCM সার্ভারে পুশ নোটিফিকেশন পাঠাতে পারবেন।
Request Body Example:
{
"message": {
"token" : "device_token_here",
"notification" : {
"title" : "Hello",
"body" : "This is a test notification"
},
"data" : {
"extra_info" : "This is some extra data"
}
}
}
Example HTTP Request in C#:
using System.Net.Http;
using System.Text;
public async Task SendNotificationAsync(string token, string title, string body)
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://fcm.googleapis.com/v1/projects/YOUR_PROJECT_ID/messages:send");
request.Headers.Add("Authorization", "Bearer YOUR_SERVER_KEY");
var json = $@"
{{
""message"": {{
""token"": ""{token}"",
""notification"": {{
""title"": ""{title}"",
""body"": ""{body}""
}},
""data"": {{
""extra_info"": ""Some extra data""
}}
}}
}}";
request.Content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
এখানে:
- YOUR_PROJECT_ID: Firebase প্রজেক্টের ID।
- YOUR_SERVER_KEY: Firebase Console থেকে প্রাপ্ত Server Key।
- token: যে ডিভাইসে নোটিফিকেশন পাঠাতে চান তার FCM Token।
সারাংশ:
- Firebase Cloud Messaging (FCM) ব্যবহার করে .NET MAUI অ্যাপ্লিকেশনগুলিতে পুশ নোটিফিকেশন পাঠানো যায়।
- Firebase Console ব্যবহার করে আপনি সহজেই পুশ নোটিফিকেশন পাঠাতে পারেন।
- FirebaseMessagingService এর মাধ্যমে FCM Token প্রাপ্তি এবং নোটিফিকেশন রিসিভ করতে পারেন।
- আপনি HTTP v1 API ব্যবহার করে সার্ভার থেকে প্রোগ্রামেটিকালি পুশ নোটিফিকেশন পাঠাতে পারেন।
Background Tasks এবং Background Fetch হল এমন ফিচার যা অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে চলার সময় নির্দিষ্ট কাজ সম্পাদন করতে সক্ষম করে। যেমন, ডেটা লোড করা, নোটিফিকেশন পাঠানো, বা অন্যান্য ভারী কাজ যা ইউজারের ইন্টারঅ্যাকশন ছাড়াই সম্পন্ন হতে পারে। .NET MAUI-তে, এটি ব্যবহারের জন্য কিছু নির্দিষ্ট প্যাকেজ এবং কনফিগারেশন প্রয়োজন হয়।
এখানে Background Tasks এবং Background Fetch এর ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হবে।
Background Tasks .NET MAUI তে
Background Tasks হল এমন প্রক্রিয়া যা অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে থাকলেও নির্দিষ্ট কাজ সম্পাদন করে। .NET MAUI তে ব্যাকগ্রাউন্ড টাস্কস ব্যবহারের জন্য আমরা Essentials API বা WorkManager লাইব্রেরি ব্যবহার করতে পারি।
Background Task Implementations:
- Xamarin Essentials (মোবাইল অ্যাপ্লিকেশনের জন্য) Essentials প্যাকেজটি .NET MAUI অ্যাপ্লিকেশনে ব্যাকগ্রাউন্ড টাস্ক ব্যবস্থাপনা সরবরাহ করে।
Example of Running Background Task (Xamarin Essentials)
- App.xaml.cs:
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new MainPage();
}
// Register background task
public static void StartBackgroundTask()
{
Device.BeginInvokeOnMainThread(async () =>
{
await Task.Delay(5000); // Simulate background task (e.g., data fetching)
// Run a task here (e.g., fetch data or send notifications)
});
}
}
- MainPage.xaml.cs:
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
App.StartBackgroundTask(); // Start background task when app launches
}
}
এখানে:
- Device.BeginInvokeOnMainThread() ব্যবহার করা হয়েছে, যা UI থ্রেডের বাইরে ব্যাকগ্রাউন্ড থ্রেডে কাজ করতে সহায়তা করে।
- ব্যাকগ্রাউন্ড কাজের মধ্যে ডেটা ফেচিং বা নোটিফিকেশন পাঠানো হতে পারে।
Background Fetch .NET MAUI তে
Background Fetch হল একটি ফিচার যা ডিভাইসের ব্যাকগ্রাউন্ডে নির্দিষ্ট সময় পর পর ডেটা ফেচ করতে সক্ষম করে। যেমন, সংবাদ অ্যাপ্লিকেশনগুলি সাধারণত ব্যাকগ্রাউন্ডে থেকে আপডেট ফেচ করে। Background Fetch ইউজারকে নোটিফিকেশন প্রদর্শন করতে, নতুন ডেটা লোড করতে বা কার্যক্রম পুনরায় শুরু করতে ব্যবহৃত হয়।
Background Fetch with Background Fetch API (iOS, Android)
.NET MAUI তে Background Fetch ব্যবহার করতে, আপনি প্ল্যাটফর্ম নির্দিষ্ট কোড ব্যবহার করতে হবে, যেমন iOS এবং Android।
1. Background Fetch on iOS:
Info.plist এ নিচের কোডটি যোগ করুন:
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
</array>
ব্যাকগ্রাউন্ড ফেচ কোড:
#if IOS
public void ConfigureBackgroundFetch()
{
BackgroundFetch.SetMinimumInterval(TimeSpan.FromMinutes(15)); // Set interval for fetching data
BackgroundFetch.FetchFinished += OnFetchFinished;
}
private void OnFetchFinished(object sender, BackgroundFetchEventArgs e)
{
// Fetch new data here
// Call API to get new data or update content
e.SetResult(BackgroundFetchResult.NewData);
}
#endif
2. Background Fetch on Android:
AndroidManifest.xml এ নিচের কোডটি যোগ করুন:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
ব্যাকগ্রাউন্ড ফেচ কোড:
#if ANDROID
public void ConfigureBackgroundFetch()
{
BackgroundFetch.SetMinimumInterval(TimeSpan.FromMinutes(15)); // Set interval for fetching data
BackgroundFetch.FetchFinished += OnFetchFinished;
}
private void OnFetchFinished(object sender, BackgroundFetchEventArgs e)
{
// Fetch new data here
// Call API to get new data or update content
e.SetResult(BackgroundFetchResult.NewData);
}
#endif
Using Background Fetch with .NET MAUI Essentials
.NET MAUI Essentials এখনও অফিসিয়ালি ব্যাকগ্রাউন্ড ফেচ সরাসরি সাপোর্ট দেয় না, তবে Xamarin Essentials এ ব্যাকগ্রাউন্ড ফেচ পরিচালনার জন্য কোড ব্যবহার করা যেতে পারে, এবং .NET MAUI তে এর সমর্থন আসবে।
Scheduling Background Task with WorkManager (Android)
Android-এ WorkManager API ব্যবহার করে নির্দিষ্ট সময়ের পর পর ব্যাকগ্রাউন্ড কাজ নির্ধারণ করা যেতে পারে।
Example: WorkManager Scheduling
Install WorkManager NuGet: প্রথমে, WorkManager NuGet প্যাকেজ ইনস্টল করুন:
Install-Package Xamarin.AndroidX.Work.Runtime- Configure WorkManager:
using AndroidX.Work;
public void ScheduleWork()
{
// Define the work to be done
var workRequest = PeriodicWorkRequest.Builder
.From<YourBackgroundTask>(TimeSpan.FromHours(1))
.Build();
// Enqueue the work
WorkManager.GetInstance(Android.App.Application.Context).Enqueue(workRequest);
}
public class YourBackgroundTask : Worker
{
public YourBackgroundTask(Context context, WorkerParameters workerParams)
: base(context, workerParams) { }
public override Result DoWork()
{
// Code to run in background
return Result.InvokeSuccess();
}
}
এখানে:
- WorkManager ব্যাকগ্রাউন্ড কাজ পরিকল্পনা করার জন্য ব্যবহৃত হয়।
- PeriodicWorkRequest.Builder ব্যবহার করে কাজটি একটি নির্দিষ্ট সময় পর পর পুনরায় চালানো হবে।
Key Concepts to Understand:
- Background Task: ডিভাইসের ব্যাকগ্রাউন্ডে কাজ করার জন্য প্রক্রিয়া যা ইউজারের ইন্টারঅ্যাকশন ছাড়াই চলে, যেমন ডেটা আপডেট করা বা নোটিফিকেশন পাঠানো।
- Background Fetch: নির্দিষ্ট সময় পর পর ডেটা ফেচ করা, বিশেষ করে যখন অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে থাকে।
- WorkManager: Android এর জন্য ব্যাকগ্রাউন্ড কাজ পরিকল্পনা করার জন্য ব্যবহৃত একটি শক্তিশালী API।
- Permissions: মোবাইল অ্যাপ্লিকেশনে ব্যাকগ্রাউন্ড কাজ করার জন্য নির্দিষ্ট পারমিশন দরকার হতে পারে (যেমন: Location, Network Access)।
সারাংশ:
Background Tasks এবং Background Fetch ডিভাইসের ব্যাকগ্রাউন্ডে কাজ করতে সাহায্য করে, যেমন ডেটা লোড বা অ্যাপ্লিকেশন আপডেট করা। .NET MAUI তে ব্যাকগ্রাউন্ড কাজ করার জন্য Essentials API, WorkManager, এবং প্ল্যাটফর্ম নির্দিষ্ট কোড ব্যবহার করা যেতে পারে। যদিও .NET MAUI তে এখন পর্যন্ত ব্যাকগ্রাউন্ড ফেচ সরাসরি সমর্থন নেই, তবে Xamarin Essentials বা Android WorkManager ব্যবহার করে এটি কাজ করা সম্ভব।
Expo Notifications API একটি শক্তিশালী টুল যা React Native অ্যাপ্লিকেশনে নোটিফিকেশন সিস্টেম ইন্টিগ্রেট করতে সহায়ক। এটি দিয়ে আপনি local এবং push notifications পাঠাতে পারেন। Expo একটি ফ্রেমওয়ার্ক এবং প্ল্যাটফর্ম যা React Native অ্যাপ্লিকেশন তৈরি করা সহজ করে তোলে এবং এর মাধ্যমে আপনি একাধিক নেটিভ ফিচার যেমন ক্যামেরা, জিপিএস, নোটিফিকেশন ইত্যাদি সহজেই ব্যবহার করতে পারেন।
Expo Notifications API ব্যবহার করে আপনি খুব সহজেই local notifications পাঠাতে পারবেন এবং push notifications পাঠানোর জন্য একটি সার্ভার বা Expo Push Notification Service ব্যবহার করতে পারবেন।
1. Installing and Setting Up Expo Notifications
প্রথমে আপনাকে Expo Notifications API ইন্টিগ্রেট করার জন্য Expo প্যাকেজ ইনস্টল করতে হবে।
expo install expo-notifications
এছাড়া, আপনি expo-permissions ইনস্টল করার জন্য ব্যবহার করতে পারেন, যেটি প্রয়োজনীয় পারমিশন রিকোয়েস্ট করতে সহায়তা করে।
expo install expo-permissions
2. Requesting Permissions
নোটিফিকেশন পাঠানোর আগে, আপনাকে ব্যবহারকারীর কাছ থেকে পারমিশন নিতে হবে। Expo Notifications API তে পারমিশন রিকোয়েস্ট করার জন্য requestPermissionsAsync() মেথড ব্যবহার করা হয়।
import * as Notifications from 'expo-notifications';
import * as Permissions from 'expo-permissions';
async function requestNotificationPermission() {
const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
if (status === 'granted') {
console.log('Notification permissions granted');
} else {
console.log('Notification permissions denied');
}
}
- Permissions.askAsync(): এটি পারমিশন রিকোয়েস্ট করে এবং status রিটার্ন করে, যা
grantedবাdeniedহতে পারে।
3. Receiving Notifications
আপনি যখন নোটিফিকেশন পাবেন, তখন Expo Notifications API-এর মাধ্যমে সেটি হ্যান্ডল করতে পারেন। আপনি notification response handler ব্যবহার করে নোটিফিকেশন রিসিভ করতে পারেন।
Handling Notifications
import * as Notifications from 'expo-notifications';
Notifications.addNotificationReceivedListener(notification => {
console.log('Notification received:', notification);
});
Notifications.addNotificationResponseReceivedListener(response => {
console.log('Notification response received:', response);
});
এখানে:
- addNotificationReceivedListener: এটি ব্যবহৃত হয় যখন একটি নোটিফিকেশন অ্যাপের ভিতরে এসে পৌঁছায়।
- addNotificationResponseReceivedListener: এটি ব্যবহৃত হয় যখন ব্যবহারকারী নোটিফিকেশনটি ক্লিক বা ইন্টারঅ্যাক্ট করেন।
4. Sending Local Notifications
Local Notifications হল নোটিফিকেশন যা ব্যবহারকারীর ডিভাইসে locally ট্রিগার করা হয়। আপনি সময় নির্ধারণ করে একটি স্থানীয় নোটিফিকেশন পাঠাতে পারেন।
Sending Local Notifications
import * as Notifications from 'expo-notifications';
async function scheduleNotification() {
await Notifications.scheduleNotificationAsync({
content: {
title: "Hello!",
body: 'This is a local notification',
},
trigger: {
seconds: 5, // Sends the notification 5 seconds later
},
});
}
এখানে:
- Notifications.scheduleNotificationAsync(): এটি একটি নোটিফিকেশন নির্দিষ্ট সময় পর পাঠাতে ব্যবহৃত হয়।
- trigger: এটি কিভাবে নোটিফিকেশনটি ট্রিগার হবে তা নির্ধারণ করে। যেমন,
seconds,minute, বা নির্দিষ্টdateদিয়ে ট্রিগার করা যেতে পারে।
5. Sending Push Notifications
Push Notifications হল সেন্ট্রাল সার্ভার থেকে পাঠানো নোটিফিকেশন যা সাধারণত ব্যবহারকারীর ডিভাইসে দূর থেকে পাঠানো হয়। Push Notifications পাঠাতে হলে আপনাকে Expo Push Notification Service ব্যবহার করতে হবে।
Setting up Push Notifications
Expo Push Notifications ব্যবহারের জন্য আপনাকে একটি Expo Push Token সংগ্রহ করতে হবে। এই token ব্যবহার করে আপনি push notifications পাঠাতে পারবেন।
import * as Notifications from 'expo-notifications';
async function getPushToken() {
const { data: token } = await Notifications.getExpoPushTokenAsync();
console.log('Expo Push Token:', token);
}
এটি আপনাকে একটি Push Token প্রদান করবে, যা আপনি এক্সপো সার্ভারে বা আপনার নিজস্ব সার্ভারে ব্যবহার করে push notifications পাঠাতে পারবেন।
Sending Push Notifications from the Server
Push notifications পাঠাতে আপনাকে সার্ভারে Expo Push Notification Service API ব্যবহার করতে হবে। এটি একটি HTTP POST রিকোয়েস্ট যা push token এবং অন্যান্য তথ্য পাঠায়।
POST Request Example:
const fetch = require('node-fetch');
async function sendPushNotification(token, message) {
const response = await fetch('https://exp.host/--/api/v2/push/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
to: token,
title: 'New Notification',
body: message,
}),
});
const responseJson = await response.json();
console.log(responseJson);
}
এখানে:
- https://exp.host/--/api/v2/push/send: এটি Expo Push Notification Service এর API রুট।
- to: এটি সেই
pushTokenযেটিতে নোটিফিকেশন পাঠানো হবে।
6. Handling Notifications in Background
এছাড়াও, আপনি background notifications বা foreground notifications হ্যান্ডেল করতে পারেন। সাধারণত, অ্যাপের ব্যাকগ্রাউন্ডে থাকা অবস্থায় একটি নোটিফিকেশন আসে এবং তা অ্যাপের আউটপুট হিসেবে প্রদর্শিত হয়।
Notifications.setNotificationHandler({
handleNotification: async () => ({
shouldShowAlert: true, // Show the notification alert
shouldPlaySound: false, // Disable sound for this notification
shouldSetBadge: false, // Disable badge count
}),
});
এটি ব্যবহারকারীর ডিভাইসে নোটিফিকেশন হ্যান্ডলিং কাস্টমাইজ করার জন্য ব্যবহৃত হয়।
Summary
Expo Notifications API একটি শক্তিশালী টুল যা React Native অ্যাপ্লিকেশনে নোটিফিকেশন সিস্টেম ইন্টিগ্রেট করতে সাহায্য করে। এটি আপনাকে local notifications এবং push notifications পাঠাতে এবং গ্রহণ করতে সহায়তা করে।
- Local notifications ব্যবহারকারীকে অ্যাপের ভিতরে স্থানীয়ভাবে নোটিফিকেশন পাঠাতে ব্যবহৃত হয়।
- Push notifications ব্যবহারকারীর ডিভাইসে রিমোট সার্ভার থেকে নোটিফিকেশন পাঠানোর জন্য ব্যবহৃত হয়।
- Expo Push Token এর মাধ্যমে আপনি push notifications পাঠানোর জন্য Expo Push Notification Service ব্যবহার করতে পারেন।
Expo Notifications API দিয়ে আপনি একটি খুব কার্যকরী এবং রেসপন্সিভ নোটিফিকেশন সিস্টেম তৈরি করতে পারেন।
Read more