Apple প্ল্যাটফর্মে একটি Firebase ক্লাউড মেসেজিং ক্লায়েন্ট অ্যাপ সেট আপ করুন

Apple ক্লায়েন্ট অ্যাপগুলির জন্য, আপনি Firebase Cloud Messaging APNs ইন্টারফেসের মাধ্যমে 4096 বাইট পর্যন্ত বিজ্ঞপ্তি এবং ডেটা পেলোড পেতে পারেন।

অবজেক্টিভ-সি বা সুইফটে আপনার ক্লায়েন্ট কোড লিখতে, আমরা আপনাকে FIRMessaging API ব্যবহার করার পরামর্শ দিই। কুইকস্টার্ট উদাহরণ উভয় ভাষার জন্য নমুনা কোড প্রদান করে।

Firebase Cloud Messaging এ দোদুল্যমান পদ্ধতি

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

আপনার Apple প্রকল্পে Firebase যোগ করুন

যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে আপনার Apple প্রকল্পে Firebase যোগ করুন

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

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

  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()

উদ্দেশ্য-C

[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

উদ্দেশ্য-C

[FIRMessaging messaging].delegate = self;

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

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

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

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

সুইফট

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

উদ্দেশ্য-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];

টোকেন সংরক্ষণ করার পরিবর্তে আপনি যে কোনো সময় এই পদ্ধতিটি ব্যবহার করতে পারেন।

টোকেন রিফ্রেশ মনিটর

যখনই টোকেন আপডেট করা হয় তখন অবহিত করার জন্য, মেসেজিং প্রতিনিধি প্রোটোকলের সাথে সঙ্গতিপূর্ণ একটি প্রতিনিধি সরবরাহ করুন। নিম্নলিখিত উদাহরণটি প্রতিনিধি নিবন্ধন করে এবং যথাযথ প্রতিনিধি পদ্ধতি যোগ করে:

সুইফট

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
  print("Firebase registration token: \(String(describing: fcmToken))")

  let dataDict: [String: String] = ["token": fcmToken ?? ""]
  NotificationCenter.default.post(
    name: Notification.Name("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.
}

উদ্দেশ্য-C

- (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 অ্যাপ তৈরি করছেন, তাহলে আপনাকে স্পষ্টভাবে FCM রেজিস্ট্রেশন টোকেনে আপনার APN টোকেন ম্যাপ করতে হবে। APNs টোকেন পুনরুদ্ধার করতে application(_:didRegisterForRemoteNotificationsWithDeviceToken:) পদ্ধতি প্রয়োগ করুন এবং তারপর Messaging এর apnsToken সম্পত্তি সেট করুন:

সুইফট

func application(application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  Messaging.messaging().apnsToken = deviceToken
}

উদ্দেশ্য-C

// 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

উদ্দেশ্য-C

[FIRMessaging messaging].autoInitEnabled = YES;

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

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

আপনি আপনার Apple ক্লায়েন্ট সেট আপ করার পরে, আপনি আপনার অ্যাপে বার্তা পরিচালনা এবং অন্যান্য, আরও উন্নত আচরণ যোগ করতে প্রস্তুত। আরও তথ্যের জন্য এই নির্দেশিকাগুলি দেখুন: