অ্যাপল প্ল্যাটফর্ম অ্যাপগুলিতে ফায়ারবেস ক্লাউড মেসেজিং দিয়ে শুরু করুন

প্ল্যাটফর্ম নির্বাচন করুন: iOS+ অ্যান্ড্রয়েড ওয়েব ফ্লাটার ইউনিটি সি++


এই নির্দেশিকাটি বর্ণনা করে যে কীভাবে আপনার অ্যাপল প্ল্যাটফর্ম (যেমন iOS) ক্লায়েন্ট অ্যাপগুলিতে Firebase Cloud Messaging শুরু করবেন যাতে আপনি নির্ভরযোগ্যভাবে বার্তা পাঠাতে পারেন।

অ্যাপল ক্লায়েন্ট অ্যাপের জন্য, আপনি Firebase Cloud Messaging এপিএন ইন্টারফেসের মাধ্যমে ৪০৯৬ বাইট পর্যন্ত বিজ্ঞপ্তি এবং ডেটা পেলোড পেতে পারেন।

আপনার ক্লায়েন্ট কোডটি Objective-C অথবা Swift-এ লেখার জন্য, আমরা আপনাকে FIRMessaging API ব্যবহার করার পরামর্শ দিচ্ছি। কুইকস্টার্ট উদাহরণে উভয় ভাষার জন্য নমুনা কোড প্রদান করা হয়েছে।

শুরু করার আগে, আপনার অ্যাপল প্রজেক্টে Firebase যোগ করুন

Firebase Cloud Messaging এ পদ্ধতি সুইজলিং

FCM SDK দুটি গুরুত্বপূর্ণ ক্ষেত্রে পদ্ধতি সুইজলিং সম্পাদন করে: FCM নিবন্ধন টোকেনের সাথে আপনার APN টোকেন ম্যাপ করা এবং ডাউনস্ট্রিম বার্তা কলব্যাক হ্যান্ডলিং এর সময় বিশ্লেষণ ডেটা ক্যাপচার করা। যেসব ডেভেলপার সুইজলিং ব্যবহার করতে পছন্দ করেন না তারা অ্যাপের Info.plist ফাইলে FirebaseAppDelegateProxyEnabled পতাকা যোগ করে এবং এটিকে NO (বুলিয়ান মান) এ সেট করে এটি অক্ষম করতে পারেন। গাইডের প্রাসঙ্গিক ক্ষেত্রগুলি পদ্ধতি সুইজলিং সক্ষম থাকা অবস্থায় এবং ছাড়াই কোড উদাহরণ প্রদান করে।

আপনার APN প্রমাণীকরণ কী আপলোড করুন

আপনার APN প্রমাণীকরণ কী Firebase-এ আপলোড করুন। যদি আপনার কাছে ইতিমধ্যেই একটি APN প্রমাণীকরণ কী না থাকে, তাহলে Apple Developer Member Center- এ একটি তৈরি করতে ভুলবেন না।

  1. Firebase কনসোলে আপনার প্রোজেক্টের ভিতরে, গিয়ার আইকনটি নির্বাচন করুন, প্রোজেক্ট সেটিংস নির্বাচন করুন এবং তারপর ক্লাউড মেসেজিং ট্যাবটি নির্বাচন করুন।

  2. iOS অ্যাপ কনফিগারেশনের অধীনে APNs প্রমাণীকরণ কী- তে, আপনার ডেভেলপমেন্ট প্রমাণীকরণ কী, অথবা প্রোডাকশন প্রমাণীকরণ কী, অথবা উভয়ই আপলোড করতে আপলোড বোতামে ক্লিক করুন। কমপক্ষে একটি প্রয়োজন।

  3. আপনার কী যেখানে সংরক্ষণ করেছেন সেই স্থানে ব্রাউজ করুন, এটি নির্বাচন করুন এবং খুলুন ক্লিক করুন। কীটির জন্য কী আইডি যোগ করুন ( অ্যাপল ডেভেলপার সদস্য কেন্দ্রে উপলব্ধ) এবং আপলোড ক্লিক করুন।

দূরবর্তী বিজ্ঞপ্তির জন্য নিবন্ধন করুন

হয় স্টার্টআপে, অথবা আপনার অ্যাপ্লিকেশন প্রবাহের কাঙ্ক্ষিত সময়ে, দূরবর্তী বিজ্ঞপ্তির জন্য আপনার অ্যাপটি নিবন্ধন করুন। দেখানো হিসাবে 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 অ্যাপ লঞ্চের সময় ক্লায়েন্ট অ্যাপ ইনস্ট্যান্সের জন্য একটি নিবন্ধন টোকেন তৈরি করে। APN ডিভাইস টোকেনের মতো, এই টোকেনটি আপনাকে আপনার অ্যাপের যেকোনো নির্দিষ্ট ইনস্ট্যান্সে লক্ষ্যবস্তু বিজ্ঞপ্তি পাঠাতে দেয়।

অ্যাপল প্ল্যাটফর্মগুলি সাধারণত অ্যাপ শুরু করার সময় একটি APN ডিভাইস টোকেন সরবরাহ করে, ঠিক একইভাবে FCM FIRMessagingDelegate এর messaging:didReceiveRegistrationToken: পদ্ধতির মাধ্যমে একটি নিবন্ধন টোকেন সরবরাহ করে। FCM SDK প্রাথমিক অ্যাপ লঞ্চের সময় এবং যখনই টোকেনটি আপডেট বা অবৈধ করা হয় তখন একটি নতুন বা বিদ্যমান টোকেন পুনরুদ্ধার করে। সমস্ত ক্ষেত্রে, FCM SDK একটি বৈধ টোকেন সহ messaging messaging:didReceiveRegistrationToken: কল করে।

রেজিস্ট্রেশন টোকেন পরিবর্তন হতে পারে যখন:

  • অ্যাপটি একটি নতুন ডিভাইসে পুনরুদ্ধার করা হয়েছে
  • ব্যবহারকারী অ্যাপটি আনইনস্টল/পুনরায় ইনস্টল করেন
  • ব্যবহারকারী অ্যাপ ডেটা সাফ করে।

মেসেজিং ডেলিগেট সেট করুন

রেজিস্ট্রেশন টোকেন পেতে, মেসেজিং ডেলিগেট প্রোটোকলটি বাস্তবায়ন করুন এবং [FIRApp configure] কল করার পরে FIRMessaging এর delegate প্রোপার্টি সেট করুন। উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশন ডেলিগেট মেসেজিং ডেলিগেট প্রোটোকলের সাথে সঙ্গতিপূর্ণ হয়, তাহলে আপনি application:didFinishLaunchingWithOptions: এর ডেলিগেটটিকে নিজেই সেট করতে পারেন।

সুইফট

Messaging.messaging().delegate = self

অবজেক্টিভ-সি

[FIRMessaging messaging].delegate = self;

বর্তমান নিবন্ধন টোকেনটি আনা হচ্ছে

নিবন্ধন টোকেনগুলি messaging:didReceiveRegistrationToken: পদ্ধতির মাধ্যমে সরবরাহ করা হয়। এই পদ্ধতিটি সাধারণত প্রতি অ্যাপে একবার নিবন্ধন টোকেন দিয়ে শুরু করে। যখন এই পদ্ধতিটি বলা হয়, তখন এটি আদর্শ সময়:

  • যদি রেজিস্ট্রেশন টোকেনটি নতুন হয়, তাহলে এটি আপনার অ্যাপ্লিকেশন সার্ভারে পাঠান।
  • বিষয়গুলিতে নিবন্ধন টোকেন সাবস্ক্রাইব করুন। এটি শুধুমাত্র নতুন সাবস্ক্রিপশনের জন্য বা ব্যবহারকারী যখন অ্যাপটি পুনরায় ইনস্টল করেছেন তখন প্রয়োজন।

আপনি token(completion:) ব্যবহার করে সরাসরি টোকেনটি পুনরুদ্ধার করতে পারেন। যদি টোকেন পুনরুদ্ধার কোনওভাবে ব্যর্থ হয় তবে একটি অ-নাল ত্রুটি প্রদান করা হবে।

সুইফট

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 অ্যাপ তৈরি করছেন, তাহলে আপনাকে আপনার APN টোকেনটিকে FCM রেজিস্ট্রেশন টোকেনের সাথে স্পষ্টভাবে ম্যাপ করতে হবে। APN টোকেনটি পুনরুদ্ধার করতে 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;

একবার সেট করা হলে অ্যাপ রিস্টার্ট জুড়ে এই মানটি বজায় থাকে।

বিজ্ঞপ্তি পরিষেবা এক্সটেনশন সেট আপ করুন

অ্যাপল ডিভাইসে ছবি সহ বিজ্ঞপ্তি পাঠাতে, আপনাকে একটি বিজ্ঞপ্তি পরিষেবা এক্সটেনশন যোগ করতে হবে। এই এক্সটেনশনটি ডিভাইসগুলিকে বিজ্ঞপ্তি পেলোডে বিতরণ করা ছবি প্রদর্শন করতে দেয়। যদি আপনি বিজ্ঞপ্তিতে ছবি পাঠানোর পরিকল্পনা না করেন, তাহলে আপনি এই ধাপটি এড়িয়ে যেতে পারেন।

একটি পরিষেবা এক্সটেনশন যোগ করতে, APN গুলিতে বিজ্ঞপ্তি পরিবর্তন এবং উপস্থাপনের জন্য প্রয়োজনীয় সেটআপ কাজগুলি সম্পাদন করুন এবং তারপর 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];

}
...

একটি বিজ্ঞপ্তি বার্তা পাঠান

  1. টার্গেট ডিভাইসে অ্যাপটি ইনস্টল করুন এবং চালান। অ্যাপল ডিভাইসে, রিমোট নোটিফিকেশন পাওয়ার অনুমতির অনুরোধ গ্রহণ করুন।
  2. ডিভাইসে অ্যাপটি ব্যাকগ্রাউন্ডে আছে কিনা তা পরীক্ষা করুন।
  3. ফায়ারবেস কনসোলে, মেসেজিং পৃষ্ঠাটি খুলুন।
  4. যদি এটি আপনার প্রথম বার্তা হয়, তাহলে আপনার প্রথম প্রচারণা তৈরি করুন নির্বাচন করুন।
    1. Firebase Notification messages নির্বাচন করুন এবং Create নির্বাচন করুন।
  5. অন্যথায়, প্রচারণা ট্যাবে, নতুন প্রচারণা এবং তারপর বিজ্ঞপ্তি নির্বাচন করুন।
  6. বার্তার টেক্সট লিখুন।
  7. ডান ফলক থেকে পরীক্ষামূলক বার্তা পাঠান নির্বাচন করুন।
  8. "একটি FCM নিবন্ধন টোকেন যোগ করুন" লেবেলযুক্ত ক্ষেত্রে, আপনার নিবন্ধন টোকেনটি লিখুন।
  9. পরীক্ষা নির্বাচন করুন।

আপনি Test নির্বাচন করার পরে, লক্ষ্যযুক্ত ক্লায়েন্ট ডিভাইস, যার অ্যাপটি ব্যাকগ্রাউন্ডে থাকবে, বিজ্ঞপ্তিটি পাবে।

আপনার অ্যাপে বার্তা সরবরাহের অন্তর্দৃষ্টির জন্য, FCM রিপোর্টিং ড্যাশবোর্ডটি দেখুন, যা অ্যাপল এবং অ্যান্ড্রয়েড ডিভাইসে প্রেরিত এবং খোলা বার্তার সংখ্যা রেকর্ড করে।

পরবর্তী পদক্ষেপ

সেটআপ ধাপগুলি সম্পন্ন করার পরে, অ্যাপল প্ল্যাটফর্মের জন্য FCM নিয়ে এগিয়ে যাওয়ার জন্য এখানে কয়েকটি বিকল্প রয়েছে: