| প্ল্যাটফর্ম নির্বাচন করুন: | iOS+ অ্যান্ড্রয়েড ওয়েব ফ্লাটার ইউনিটি C++ |
এই নির্দেশিকায় বর্ণনা করা হয়েছে কীভাবে আপনার অ্যাপল প্ল্যাটফর্মের (যেমন iOS) ক্লায়েন্ট অ্যাপে Firebase Cloud Messaging শুরু করবেন, যাতে আপনি নির্ভরযোগ্যভাবে বার্তা পাঠাতে পারেন।
অ্যাপল ক্লায়েন্ট অ্যাপের ক্ষেত্রে, আপনি Firebase Cloud Messaging APNs ইন্টারফেসের মাধ্যমে ৪০৯৬ বাইট পর্যন্ত নোটিফিকেশন এবং ডেটা পেলোড গ্রহণ করতে পারবেন।
Objective-C বা Swift-এ আপনার ক্লায়েন্ট কোড লেখার জন্য, আমরা FIRMessaging API ব্যবহার করার পরামর্শ দিই। কুইকস্টার্ট উদাহরণটিতে উভয় ভাষার জন্যই নমুনা কোড দেওয়া আছে।
শুরু করার আগে, আপনার অ্যাপল প্রজেক্টে ফায়ারবেস যুক্ত করুন ।
Firebase Cloud Messaging এ মেথড সুইজলিং
FCM SDK দুটি প্রধান ক্ষেত্রে মেথড সুইজলিং সম্পাদন করে: আপনার APNs টোকেনকে FCM রেজিস্ট্রেশন টোকেনের সাথে ম্যাপ করা এবং ডাউনস্ট্রিম মেসেজ কলব্যাক হ্যান্ডলিংয়ের সময় অ্যানালিটিক্স ডেটা ক্যাপচার করা। যে সকল ডেভেলপার সুইজলিং ব্যবহার করতে চান না, তারা অ্যাপের Info.plist ফাইলে FirebaseAppDelegateProxyEnabled ফ্ল্যাগটি যোগ করে এবং এটিকে NO (বুলিয়ান ভ্যালু) সেট করে এটি নিষ্ক্রিয় করতে পারেন। গাইডের প্রাসঙ্গিক অংশগুলিতে মেথড সুইজলিং সক্রিয় এবং নিষ্ক্রিয় উভয় অবস্থাতেই কোডের উদাহরণ দেওয়া আছে।
আপনার APNs প্রমাণীকরণ কী আপলোড করুন
আপনার APNs অথেন্টিকেশন কী Firebase-এ আপলোড করুন। যদি আপনার আগে থেকে কোনো APNs অথেন্টিকেশন কী না থাকে, তবে Apple Developer Member Center থেকে একটি তৈরি করে নিন।
আপনার প্রোজেক্টের ভিতরে Firebase কনসোলে, গিয়ার আইকনটি নির্বাচন করুন, প্রোজেক্ট সেটিংস নির্বাচন করুন এবং তারপরে ক্লাউড মেসেজিং ট্যাবটি নির্বাচন করুন।
iOS অ্যাপ কনফিগারেশনের অধীনে APNs অথেন্টিকেশন কী- তে, আপনার ডেভেলপমেন্ট অথেন্টিকেশন কী, অথবা প্রোডাকশন অথেন্টিকেশন কী, অথবা উভয়ই আপলোড করতে আপলোড বোতামে ক্লিক করুন। এর মধ্যে অন্তত একটি থাকা আবশ্যক।
যেখানে আপনি আপনার কী (key) সংরক্ষণ করেছেন সেই অবস্থানে যান, সেটি নির্বাচন করুন এবং 'Open'-এ ক্লিক করুন। কী-টির জন্য কী আইডি (যা Apple Developer Member Center- এ পাওয়া যাবে) যোগ করুন এবং 'Upload'-এ ক্লিক করুন।
দূরবর্তী বিজ্ঞপ্তির জন্য নিবন্ধন করুন
অ্যাপ চালু করার সময় অথবা আপনার অ্যাপ্লিকেশন ফ্লো-এর কাঙ্ক্ষিত পর্যায়ে, রিমোট নোটিফিকেশনের জন্য আপনার অ্যাপটি রেজিস্টার করুন। দেখানো অনুযায়ীregisterForRemoteNotifications কল করুন:সুইফট
UNUserNotificationCenter.current().delegate = self let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] UNUserNotificationCenter.current().requestAuthorization( options: authOptions, completionHandler: { _, _ in } ) application.registerForRemoteNotifications()
উদ্দেশ্য-সি
[UNUserNotificationCenter currentNotificationCenter].delegate = self; UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge; [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) { // ... }]; [application registerForRemoteNotifications];
রেজিস্ট্রেশন টোকেন অ্যাক্সেস করুন
ডিফল্টরূপে, FCM SDK অ্যাপ চালু হওয়ার সময় ক্লায়েন্ট অ্যাপ ইনস্ট্যান্সের জন্য একটি রেজিস্ট্রেশন টোকেন তৈরি করে। APNs ডিভাইস টোকেনের মতোই, এই টোকেনটি আপনাকে আপনার অ্যাপের যেকোনো নির্দিষ্ট ইনস্ট্যান্সে টার্গেটেড নোটিফিকেশন পাঠাতে সাহায্য করে।
যেভাবে অ্যাপল প্ল্যাটফর্মগুলো সাধারণত অ্যাপ চালু হওয়ার সময় একটি APNs ডিভাইস টোকেন প্রদান করে, ঠিক সেভাবেই FCM, FIRMessagingDelegate এর messaging:didReceiveRegistrationToken: মেথডের মাধ্যমে একটি রেজিস্ট্রেশন টোকেন সরবরাহ করে। FCM SDK অ্যাপটি প্রথমবার চালু করার সময় এবং যখনই টোকেনটি আপডেট বা বাতিল করা হয়, তখন একটি নতুন বা বিদ্যমান টোকেন সংগ্রহ করে। সব ক্ষেত্রেই, FCM SDK একটি বৈধ টোকেন দিয়ে messaging:didReceiveRegistrationToken: কল করে।
নিম্নলিখিত ক্ষেত্রে রেজিস্ট্রেশন টোকেন পরিবর্তিত হতে পারে:
- অ্যাপটি একটি নতুন ডিভাইসে পুনরুদ্ধার করা হয়েছে।
- ব্যবহারকারী অ্যাপটি আনইনস্টল/পুনরায় ইনস্টল করে।
- ব্যবহারকারী অ্যাপের ডেটা মুছে ফেলেন।
মেসেজিং প্রতিনিধি সেট করুন
রেজিস্ট্রেশন টোকেন গ্রহণ করার জন্য, মেসেজিং ডেলিগেট প্রোটোকল প্রয়োগ করুন এবং [FIRApp configure] কল করার পরে FIRMessaging এর delegate প্রপার্টি সেট করুন। উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশন ডেলিগেট মেসেজিং ডেলিগেট প্রোটোকল মেনে চলে, তাহলে আপনি application:didFinishLaunchingWithOptions: -এ ডেলিগেটটিকে নিজেই সেট করতে পারেন।
সুইফট
Messaging.messaging().delegate = self
উদ্দেশ্য-সি
[FIRMessaging messaging].delegate = self;
বর্তমান রেজিস্ট্রেশন টোকেন আনা হচ্ছে
রেজিস্ট্রেশন টোকেন ` messaging:didReceiveRegistrationToken: ` মেথডের মাধ্যমে পাঠানো হয়। রেজিস্ট্রেশন টোকেন সহ অ্যাপ চালু হওয়ার সময় এই মেথডটি সাধারণত একবার কল করা হয়। যখন এই মেথডটি কল করা হয়, তখন নিম্নলিখিত কাজগুলো করার জন্য এটিই আদর্শ সময়:
- রেজিস্ট্রেশন টোকেনটি নতুন হলে, সেটি আপনার অ্যাপ্লিকেশন সার্ভারে পাঠান।
- রেজিস্ট্রেশন টোকেনটি টপিকগুলিতে সাবস্ক্রাইব করুন। এটি শুধুমাত্র নতুন সাবস্ক্রিপশনের জন্য অথবা ব্যবহারকারী অ্যাপটি পুনরায় ইনস্টল করলে প্রয়োজন হয়।
আপনি `token(completion:)` ব্যবহার করে সরাসরি টোকেনটি পুনরুদ্ধার করতে পারেন। কোনোভাবে টোকেন পুনরুদ্ধার ব্যর্থ হলে একটি নন-নাল এরর (non-null error) দেখানো হয়।
সুইফট
Messaging.messaging().token { token, error in if let error = error { print("Error fetching remote FCM registration token: \(error)") } else if let token = token { print("Remote instance ID token: \(token)") } }
উদ্দেশ্য-সি
[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error fetching the remote FCM registration token: %@", error); } else { NSLog(@"Remote FCM registration token: %@", token); NSString* message = [NSString stringWithFormat:@"FCM registration token: %@", token]; // display message NSLog(@"%@", message); } }];
টোকেনটি সংরক্ষণ না করে, আপনি যেকোনো সময় এটি অ্যাক্সেস করতে এই পদ্ধতিটি ব্যবহার করতে পারেন।
মনিটর টোকেন রিফ্রেশ
যখনই টোকেন আপডেট করা হবে, তখন বিজ্ঞপ্তি পাওয়ার জন্য মেসেজিং ডেলিগেট প্রোটোকল মেনে একটি ডেলিগেট সরবরাহ করুন। নিম্নলিখিত উদাহরণটি ডেলিগেটটি রেজিস্টার করে এবং উপযুক্ত ডেলিগেট মেথডটি যোগ করে:
সুইফট
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) { print("Firebase registration token: \(String(describing: fcmToken))") // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
উদ্দেশ্য-সি
- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken { NSLog(@"FCM registration token: %@", fcmToken); // Notify about received token. NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"]; [[NSNotificationCenter defaultCenter] postNotificationName: @"FCMToken" object:nil userInfo:dataDict]; // TODO: If necessary send token to application server. // Note: This callback is fired at each app startup and whenever a new token is generated. }
বিকল্পভাবে, ডেলিগেট মেথড সরবরাহ করার পরিবর্তে আপনি kFIRMessagingRegistrationTokenRefreshNotification নামের একটি NSNotification জন্য লিসেন করতে পারেন। টোকেন প্রপার্টিতে সর্বদা বর্তমান টোকেন ভ্যালুটি থাকে।
সুইজলিং নিষ্ক্রিয় করা হয়েছে: আপনার APN টোকেন এবং রেজিস্ট্রেশন টোকেন ম্যাপ করা হচ্ছে
যদি আপনি মেথড সুইজলিং নিষ্ক্রিয় করে থাকেন, অথবা একটি SwiftUI অ্যাপ তৈরি করেন, তাহলে আপনাকে আপনার APNs টোকেনকে FCM রেজিস্ট্রেশন টোকেনের সাথে স্পষ্টভাবে ম্যাপ করতে হবে। APNs টোকেনটি পুনরুদ্ধার করতে application(_:didRegisterForRemoteNotificationsWithDeviceToken:) মেথডটি ইমপ্লিমেন্ট করুন, এবং তারপর Messaging এর apnsToken প্রপার্টিটি সেট করুন:
সুইফট
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Messaging.messaging().apnsToken = deviceToken }
উদ্দেশ্য-সি
// With "FirebaseAppDelegateProxyEnabled": NO - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [FIRMessaging messaging].APNSToken = deviceToken; }
FCM রেজিস্ট্রেশন টোকেন তৈরি হয়ে গেলে, আপনি সুইজলিং চালু থাকার সময়ের মতোই একই পদ্ধতি ব্যবহার করে এটি অ্যাক্সেস করতে এবং রিফ্রেশ ইভেন্ট শুনতে পারবেন।
স্বয়ংক্রিয় প্রারম্ভিকীকরণ প্রতিরোধ করুন
যখন একটি FCM রেজিস্ট্রেশন টোকেন তৈরি হয়, তখন লাইব্রেরিটি আইডেন্টিফায়ার এবং কনফিগারেশন ডেটা Firebase-এ আপলোড করে। আপনি যদি প্রথমে ব্যবহারকারীদের কাছ থেকে সুস্পষ্ট সম্মতি নিতে চান, তাহলে কনফিগার করার সময় FCM নিষ্ক্রিয় করে টোকেন তৈরি হওয়া আটকাতে পারেন। এটি করার জন্য, আপনার Info.plist এ (আপনার GoogleService-Info.plist নয়) একটি মেটাডেটা ভ্যালু যোগ করুন:
FirebaseMessagingAutoInitEnabled = NO
FCM পুনরায় সক্রিয় করতে, আপনি একটি রানটাইম কল করতে পারেন:
সুইফট
Messaging.messaging().autoInitEnabled = true
উদ্দেশ্য-সি
[FIRMessaging messaging].autoInitEnabled = YES;
একবার সেট করা হলে, এই মানটি অ্যাপ পুনরায় চালু করার পরেও অপরিবর্তিত থাকে।
নোটিফিকেশন সার্ভিস এক্সটেনশন সেট আপ করুন
অ্যাপল ডিভাইসে ছবিসহ নোটিফিকেশন পাঠাতে হলে, আপনাকে একটি নোটিফিকেশন সার্ভিস এক্সটেনশন যোগ করতে হবে। এই এক্সটেনশনটি ডিভাইসগুলোকে নোটিফিকেশন পেলোডে পাঠানো ছবি প্রদর্শন করতে দেয়। যদি আপনি নোটিফিকেশনে ছবি পাঠানোর পরিকল্পনা না করেন, তবে এই ধাপটি বাদ দিতে পারেন।
একটি সার্ভিস এক্সটেনশন যোগ করতে, APNs-এ নোটিফিকেশন পরিবর্তন ও প্রদর্শনের জন্য প্রয়োজনীয় সেটআপ কাজগুলো সম্পন্ন করুন, এবং তারপর NotificationService.m এ FCM এক্সটেনশন হেল্পার API যোগ করুন। বিশেষভাবে, self.contentHandler(self.bestAttemptContent); দিয়ে কলব্যাকটি সম্পূর্ণ করার পরিবর্তে, দেখানো অনুযায়ী FIRMessaging extensionHelper দিয়ে এটি সম্পূর্ণ করুন:
@interface NotificationService () <NSURLSessionDelegate>
@property(nonatomic) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property(nonatomic) UNMutableNotificationContent *bestAttemptContent;
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
// Modify the notification content here as you want
self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]",
self.bestAttemptContent.title];
// Call FIRMessaging extension helper API.
[[FIRMessaging extensionHelper] populateNotificationContent:self.bestAttemptContent
withContentHandler:contentHandler];
}
...
একটি বিজ্ঞপ্তি বার্তা পাঠান
- টার্গেট ডিভাইসে অ্যাপটি ইনস্টল করে চালান। অ্যাপল ডিভাইসে, রিমোট নোটিফিকেশন পাওয়ার অনুমতির অনুরোধটি গ্রহণ করুন।
- অ্যাপটি ডিভাইসে ব্যাকগ্রাউন্ডে চালু আছে কিনা তা যাচাই করুন।
- Firebase কনসোলে, মেসেজিং পেজটি খুলুন।
- এটি আপনার প্রথম বার্তা হলে, ‘আপনার প্রথম প্রচারাভিযান তৈরি করুন’ নির্বাচন করুন।
- Firebase নোটিফিকেশন বার্তাগুলি নির্বাচন করুন এবং তৈরি করুন নির্বাচন করুন।
- অন্যথায়, Campaigns ট্যাবে, New campaign নির্বাচন করুন এবং তারপর Notifications নির্বাচন করুন।
- বার্তার লেখাটি লিখুন।
- ডান দিকের প্যানেল থেকে ‘Send test message’ নির্বাচন করুন।
- ‘Add an FCM registration token’ লেবেলযুক্ত ফিল্ডে আপনার রেজিস্ট্রেশন টোকেনটি প্রবেশ করান।
- পরীক্ষা নির্বাচন করুন।
আপনি ‘টেস্ট’ নির্বাচন করার পর, ব্যাকগ্রাউন্ডে অ্যাপটি চালু থাকা অবস্থায় নির্দিষ্ট ক্লায়েন্ট ডিভাইসটিতে নোটিফিকেশনটি চলে আসবে।
আপনার অ্যাপে বার্তা ডেলিভারি সম্পর্কে বিস্তারিত জানতে, FCM রিপোর্টিং ড্যাশবোর্ডটি দেখুন, যেখানে অ্যাপল এবং অ্যান্ড্রয়েড ডিভাইসে পাঠানো ও খোলা বার্তার সংখ্যা রেকর্ড করা থাকে।
পরবর্তী পদক্ষেপ
সেটআপ ধাপগুলো সম্পন্ন করার পর, অ্যাপল প্ল্যাটফর্মের জন্য FCM নিয়ে এগিয়ে যাওয়ার কয়েকটি বিকল্প নিচে দেওয়া হলো: