আপনি সার্ভার অথবা ক্লায়েন্ট উভয় স্থান থেকেই একটি ক্লায়েন্ট অ্যাপকে কোনো টপিকে সাবস্ক্রাইব করতে পারেন:
সার্ভারে, Firebase Admin SDK ব্যবহার করে।
ক্লায়েন্ট পর্যায়ে, আপনার অ্যাপের মধ্যে ক্লায়েন্ট-সাইড এপিআই ব্যবহার করে।
অ্যাডমিন এসডিকে ব্যবহার করে টপিক সাবস্ক্রিপশন পরিচালনা করুন
Firebase Admin SDK আপনাকে সার্ভার সাইড থেকে বেসিক টপিক ম্যানেজমেন্টের কাজগুলো করতে দেয়। তাদের রেজিস্ট্রেশন টোকেন ব্যবহার করে, আপনি সার্ভার লজিক দিয়ে ক্লায়েন্ট অ্যাপ ইনস্ট্যান্সগুলোকে একসাথে সাবস্ক্রাইব এবং আনসাবস্ক্রাইব করতে পারেন।
আপনি ক্লায়েন্ট অ্যাপ ইনস্ট্যান্সগুলিকে যেকোনো বিদ্যমান টপিকে সাবস্ক্রাইব করতে পারেন, অথবা একটি নতুন টপিক তৈরি করতে পারেন। যখন আপনি এপিআই ব্যবহার করে একটি ক্লায়েন্ট অ্যাপকে একটি নতুন টপিকে (যেটি আপনার ফায়ারবেস প্রজেক্টের জন্য আগে থেকে বিদ্যমান নেই) সাবস্ক্রাইব করেন, তখন এফসিএম-এ সেই নামে একটি নতুন টপিক তৈরি হয় এবং পরবর্তীতে যেকোনো ক্লায়েন্ট তাতে সাবস্ক্রাইব করতে পারে।
আপনি সংশ্লিষ্ট ডিভাইসগুলিকে একটি টপিকে সাবস্ক্রাইব করার জন্য, Firebase Admin SDK এর সাবস্ক্রিপশন মেথডে রেজিস্ট্রেশন টোকেনগুলির একটি তালিকা পাস করতে পারেন:
নোড.জেএস
// These registration tokens come from the client FCM SDKs.
const registrationTokens = [
'YOUR_REGISTRATION_TOKEN_1',
// ...
'YOUR_REGISTRATION_TOKEN_n'
];
// Subscribe the devices corresponding to the registration tokens to the
// topic.
getMessaging().subscribeToTopic(registrationTokens, topic)
.then((response) => {
// See the MessagingTopicManagementResponse reference documentation
// for the contents of response.
console.log('Successfully subscribed to topic:', response);
})
.catch((error) => {
console.log('Error subscribing to topic:', error);
});
জাভা
// These registration tokens come from the client FCM SDKs.
List<String> registrationTokens = Arrays.asList(
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n"
);
// Subscribe the devices corresponding to the registration tokens to the
// topic.
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
registrationTokens, topic);
// See the TopicManagementResponse reference documentation
// for the contents of response.
System.out.println(response.getSuccessCount() + " tokens were subscribed successfully");
পাইথন
# These registration tokens come from the client FCM SDKs.
registration_tokens = [
'YOUR_REGISTRATION_TOKEN_1',
# ...
'YOUR_REGISTRATION_TOKEN_n',
]
# Subscribe the devices corresponding to the registration tokens to the
# topic.
response = messaging.subscribe_to_topic(registration_tokens, topic)
# See the TopicManagementResponse reference documentation
# for the contents of response.
print(response.success_count, 'tokens were subscribed successfully')
যান
// These registration tokens come from the client FCM SDKs.
registrationTokens := []string{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
}
// Subscribe the devices corresponding to the registration tokens to the
// topic.
response, err := client.SubscribeToTopic(ctx, registrationTokens, topic)
if err != nil {
log.Fatalln(err)
}
// See the TopicManagementResponse reference documentation
// for the contents of response.
fmt.Println(response.SuccessCount, "tokens were subscribed successfully")
সি#
// These registration tokens come from the client FCM SDKs.
var registrationTokens = new List<string>()
{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
};
// Subscribe the devices corresponding to the registration tokens to the
// topic
var response = await FirebaseMessaging.DefaultInstance.SubscribeToTopicAsync(
registrationTokens, topic);
// See the TopicManagementResponse reference documentation
// for the contents of response.
Console.WriteLine($"{response.SuccessCount} tokens were subscribed successfully");
Firebase Admin SDK আপনাকে উপযুক্ত মেথডে রেজিস্ট্রেশন টোকেন পাস করার মাধ্যমে একটি টপিক থেকে ডিভাইস আনসাবস্ক্রাইব করার সুযোগও দেয়:
নোড.জেএস
// These registration tokens come from the client FCM SDKs.
const registrationTokens = [
'YOUR_REGISTRATION_TOKEN_1',
// ...
'YOUR_REGISTRATION_TOKEN_n'
];
// Unsubscribe the devices corresponding to the registration tokens from
// the topic.
getMessaging().unsubscribeFromTopic(registrationTokens, topic)
.then((response) => {
// See the MessagingTopicManagementResponse reference documentation
// for the contents of response.
console.log('Successfully unsubscribed from topic:', response);
})
.catch((error) => {
console.log('Error unsubscribing from topic:', error);
});
জাভা
// These registration tokens come from the client FCM SDKs.
List<String> registrationTokens = Arrays.asList(
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n"
);
// Unsubscribe the devices corresponding to the registration tokens from
// the topic.
TopicManagementResponse response = FirebaseMessaging.getInstance().unsubscribeFromTopic(
registrationTokens, topic);
// See the TopicManagementResponse reference documentation
// for the contents of response.
System.out.println(response.getSuccessCount() + " tokens were unsubscribed successfully");
পাইথন
# These registration tokens come from the client FCM SDKs.
registration_tokens = [
'YOUR_REGISTRATION_TOKEN_1',
# ...
'YOUR_REGISTRATION_TOKEN_n',
]
# Unubscribe the devices corresponding to the registration tokens from the
# topic.
response = messaging.unsubscribe_from_topic(registration_tokens, topic)
# See the TopicManagementResponse reference documentation
# for the contents of response.
print(response.success_count, 'tokens were unsubscribed successfully')
যান
// These registration tokens come from the client FCM SDKs.
registrationTokens := []string{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
}
// Unsubscribe the devices corresponding to the registration tokens from
// the topic.
response, err := client.UnsubscribeFromTopic(ctx, registrationTokens, topic)
if err != nil {
log.Fatalln(err)
}
// See the TopicManagementResponse reference documentation
// for the contents of response.
fmt.Println(response.SuccessCount, "tokens were unsubscribed successfully")
সি#
// These registration tokens come from the client FCM SDKs.
var registrationTokens = new List<string>()
{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
};
// Unsubscribe the devices corresponding to the registration tokens from the
// topic
var response = await FirebaseMessaging.DefaultInstance.UnsubscribeFromTopicAsync(
registrationTokens, topic);
// See the TopicManagementResponse reference documentation
// for the contents of response.
Console.WriteLine($"{response.SuccessCount} tokens were unsubscribed successfully");
subscribeToTopic() এবং unsubscribeFromTopic() মেথডগুলোর ফলে একটি অবজেক্ট তৈরি হয়, যাতে FCM থেকে প্রাপ্ত প্রতিক্রিয়া থাকে। অনুরোধে নির্দিষ্ট করা রেজিস্ট্রেশন টোকেনের সংখ্যা নির্বিশেষে রিটার্ন টাইপের ফরম্যাট একই থাকে।
কোনো ত্রুটির ক্ষেত্রে (যেমন প্রমাণীকরণে ব্যর্থতা, অবৈধ টোকেন বা টপিক ইত্যাদি) এই পদ্ধতিগুলো একটি ত্রুটির সৃষ্টি করে। ত্রুটি কোডগুলোর সম্পূর্ণ তালিকা, বিবরণ এবং সমাধানের ধাপসহ জানতে Firebase Admin SDK Errors দেখুন।
আপনার ক্লায়েন্ট অ্যাপ থেকে টপিক সাবস্ক্রিপশন পরিচালনা করুন
ক্লায়েন্ট অ্যাপ ইনস্ট্যান্সগুলোকে ফায়ারবেস এসডিকে-এর মাধ্যমে সরাসরি আপনার অ্যাপ থেকেই টপিকে সাবস্ক্রাইব বা আনসাবস্ক্রাইব করা যায়। মনে রাখবেন, সাবস্ক্রিপশনটি সফল হয়েছে কিনা তা নিশ্চিত করার জন্য প্রাথমিক ব্যর্থতার ক্ষেত্রে FCM পুনরায় চেষ্টা করে।
আপনার প্ল্যাটফর্ম বেছে নিন:
অ্যান্ড্রয়েড
ক্লায়েন্ট অ্যাপগুলো যেকোনো বিদ্যমান টপিকে সাবস্ক্রাইব করতে পারে, অথবা একটি নতুন টপিক তৈরি করতে পারে। যখন কোনো ক্লায়েন্ট অ্যাপ একটি নতুন টপিক নামে সাবস্ক্রাইব করে (যেটি আপনার ফায়ারবেস প্রজেক্টে আগে থেকে বিদ্যমান নেই), তখন FCM এ সেই নামের একটি নতুন টপিক তৈরি হয় এবং পরবর্তীতে যেকোনো ক্লায়েন্ট তাতে সাবস্ক্রাইব করতে পারে।
কোনো টপিকে সাবস্ক্রাইব করার জন্য, ক্লায়েন্ট অ্যাপটি FCM টপিকের নামটি সহ Firebase Cloud Messaging subscribeToTopic() কল করে। এই মেথডটি একটি Task রিটার্ন করে, যা একটি কমপ্লিশন লিসেনার দ্বারা সাবস্ক্রিপশনটি সফল হয়েছে কিনা তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।
Kotlin
Firebase.messaging.subscribeToTopic("weather") .addOnCompleteListener { task -> var msg = "Subscribed" if (!task.isSuccessful) { msg = "Subscribe failed" } Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() }
Java
FirebaseMessaging.getInstance().subscribeToTopic("weather") .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { String msg = "Subscribed"; if (!task.isSuccessful()) { msg = "Subscribe failed"; } Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
আনসাবস্ক্রাইব করতে, ক্লায়েন্ট অ্যাপটি টপিকের নামসহ Firebase Cloud Messaging unsubscribeFromTopic() ফাংশনটি কল করে।
আইওএস
ক্লায়েন্ট অ্যাপগুলো যেকোনো বিদ্যমান টপিকে সাবস্ক্রাইব করতে পারে, অথবা একটি নতুন টপিক তৈরি করতে পারে। যখন কোনো ক্লায়েন্ট অ্যাপ একটি নতুন টপিক নামে সাবস্ক্রাইব করে (যেটি আপনার ফায়ারবেস প্রজেক্টে আগে থেকে বিদ্যমান নেই), তখন FCM এ সেই নামের একটি নতুন টপিক তৈরি হয় এবং পরবর্তীতে যেকোনো ক্লায়েন্ট তাতে সাবস্ক্রাইব করতে পারে।
কোনো টপিকে সাবস্ক্রাইব করতে, আপনার অ্যাপ্লিকেশনের প্রধান থ্রেড থেকে সাবস্ক্রিপশন মেথডটি কল করুন ( FCM থ্রেড-সেফ নয়)। যদি সাবস্ক্রিপশনের অনুরোধটি প্রাথমিকভাবে ব্যর্থ হয়, FCM স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করে। যে ক্ষেত্রে সাবস্ক্রিপশনটি সম্পন্ন করা যায় না, সেক্ষেত্রে সাবস্ক্রিপশনটি একটি এরর থ্রো করে, যা আপনি একটি কমপ্লিশন হ্যান্ডলারে ক্যাচ করতে পারেন, যেমনটি দেখানো হয়েছে:
সুইফট
Messaging.messaging().subscribe(toTopic: "weather") { error in
print("Subscribed to weather topic")
}উদ্দেশ্য-সি
[[FIRMessaging messaging] subscribeToTopic:@"weather" completion:^(NSError * _Nullable error) { NSLog(@"Subscribed to weather topic"); }];
এই কলটি FCM ব্যাকএন্ডে একটি অ্যাসিঙ্ক্রোনাস অনুরোধ পাঠায় এবং ক্লায়েন্টকে প্রদত্ত টপিকে সাবস্ক্রাইব করে। subscribeToTopic:topic কল করার আগে, নিশ্চিত করুন যে ক্লায়েন্ট অ্যাপ ইনস্ট্যান্সটি didReceiveRegistrationToken কলব্যাকের মাধ্যমে ইতিমধ্যেই একটি রেজিস্ট্রেশন টোকেন পেয়েছে।
প্রতিবার অ্যাপটি চালু হওয়ার সময়, FCM নিশ্চিত করে যে অনুরোধ করা সমস্ত টপিকে সাবস্ক্রাইব করা হয়েছে। আনসাবস্ক্রাইব করতে, unsubscribeFromTopic:topic কল করুন, এবং FCM ব্যাকগ্রাউন্ডে টপিকটি থেকে আনসাবস্ক্রাইব করে দেবে।
সি++
কোনো টপিকে সাবস্ক্রাইব করতে, আপনার অ্যাপ্লিকেশন থেকে ::firebase::messaging::Subscribe কল করুন। এটি FCM ব্যাকএন্ডে একটি অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট পাঠায় এবং ক্লায়েন্টকে প্রদত্ত টপিকটিতে সাবস্ক্রাইব করে দেয়।
::firebase::messaging::Subscribe("example");
যদি সাবস্ক্রিপশন অনুরোধটি প্রাথমিকভাবে ব্যর্থ হয়, তবে FCM সফলভাবে টপিকটিতে সাবস্ক্রাইব করতে না পারা পর্যন্ত পুনরায় চেষ্টা করে। প্রতিবার অ্যাপটি চালু হওয়ার সময়, FCM নিশ্চিত করে যে অনুরোধ করা সমস্ত টপিকে সাবস্ক্রাইব করা হয়েছে।
আনসাবস্ক্রাইব করতে, ::firebase::messaging::Unsubscribe কল করুন, এবং FCM ব্যাকগ্রাউন্ডে টপিকটি থেকে আনসাবস্ক্রাইব করে দেবে।
ঐক্য
কোনো টপিকে সাবস্ক্রাইব করতে, আপনার অ্যাপ্লিকেশন থেকে Firebase.Messaging.FirebaseMessaging.Subscribe কল করুন। এটি FCM ব্যাকএন্ডে একটি অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট পাঠায় এবং ক্লায়েন্টকে প্রদত্ত টপিকটিতে সাবস্ক্রাইব করে দেয়।
Firebase.Messaging.FirebaseMessaging.Subscribe("/topics/example");
যদি সাবস্ক্রিপশন অনুরোধটি প্রাথমিকভাবে ব্যর্থ হয়, তবে FCM সফলভাবে টপিকটিতে সাবস্ক্রাইব করতে না পারা পর্যন্ত পুনরায় চেষ্টা করে। প্রতিবার অ্যাপটি চালু হওয়ার সময়, FCM নিশ্চিত করে যে অনুরোধ করা সমস্ত টপিকে সাবস্ক্রাইব করা হয়েছে।
আনসাবস্ক্রাইব করতে, Firebase.Messaging.FirebaseMessaging.Unsubscribe কল করুন, এবং FCM ব্যাকগ্রাউন্ডে টপিকটি থেকে আনসাবস্ক্রাইব করে দেবে।
লিগ্যাসি সার্ভার-সাইড টপিক ম্যানেজমেন্ট (অপ্রচলিত)
ইনস্ট্যান্স আইডি কী তা বুঝতে, ইনস্ট্যান্স আইডি পৃষ্ঠাটি দেখুন। অপ্রচলিত এন্ডপয়েন্টগুলির বিশদ বিবরণের জন্য, ইনস্ট্যান্স আইডি এপিআই রেফারেন্স দেখুন।