Registration Token হল একটি অনন্য ডিভাইস শনাক্তকারী যা Firebase Cloud Messaging (FCM) পুশ বিজ্ঞপ্তি সরবরাহ করতে ব্যবহার করে। প্রতিটি ডিভাইসের প্রতিটি অ্যাপ তার নিজস্ব টোকেন পায়, যা ছাড়া বিজ্ঞপ্তি পাঠানো অসম্ভব। Firebase, 2025 অনুসারে, Registration Token অ্যাপ প্রথমবার চালু হলে স্বয়ংক্রিয়ভাবে জেনারেট হয় এবং নির্দিষ্ট শর্তে পরিবর্তিত হতে পারে।
মূল বিষয়
Registration Token হল 4096 ক্যারেক্টার পর্যন্ত দৈর্ঘ্যের একটি অনন্য স্ট্রিং যা Firebase Cloud Messaging প্রতিটি অ্যাপ ইনস্ট্যান্সকে নির্ধারণ করে। টোকেনটি অ্যাপ্লিকেশন আইডি, ডিভাইস আইডি এবং ডিভাইসের Google অ্যাকাউন্টের ভিত্তিতে গঠিত হয়।
Registration Token-এ Base64 ফরম্যাটে এনকোড করা ক্যারেক্টারের একটি এলোমেলো ক্রম থাকে। FCM এই টোকেনকে ডেলিভারি ঠিকানা হিসেবে ব্যবহার করে — সার্ভার টোকেনে একটি বিজ্ঞপ্তি পাঠায়, এবং FCM এটি নির্দিষ্ট ডিভাইসে রুট করে। টোকেন ছাড়া নির্দিষ্ট ব্যবহারকারীকে পুশ বিজ্ঞপ্তি পাঠানো অসম্ভব।
Registration Token কে Device ID (IMEI) বা Advertising ID-এর সাথে গুলিয়ে ফেলা উচিত নয়। Device ID ডিভাইসের একটি হার্ডওয়্যার শনাক্তকারী, যখন Advertising ID বিজ্ঞাপনের উদ্দেশ্যে ব্যবহৃত হয়। Registration Token অ্যাপ এবং ডিভাইসের সংমিশ্রণের সাথে আবদ্ধ, এবং একটি ডিভাইসে বিভিন্ন অ্যাপের জন্য একাধিক টোকেন থাকতে পারে।
| শনাক্তকারী | উদ্দেশ্য | পরিবর্তনযোগ্যতা |
|---|---|---|
| Registration Token | FCM পুশ বিজ্ঞপ্তি সরবরাহ | পরিবর্তিত হতে পারে |
| Device ID (IMEI) | হার্ডওয়্যার শনাক্তকরণ | স্থায়ী |
| Advertising ID | টার্গেটেড বিজ্ঞাপন | রিসেট করা যেতে পারে |
| Instance ID | লিগ্যাসি Firebase প্রক্রিয়া | মুছে ফেললে পরিবর্তিত হত |
FCM বিভিন্ন পরিস্থিতিতে Registration Token কে অবৈধ বিবেচনা করতে পারে। যদি অ্যাপ ডিভাইস থেকে মুছে ফেলা হয়, টোকেন স্বয়ংক্রিয়ভাবে বাতিল হয়ে যায়। নতুন ডিভাইসে ব্যাকআপ থেকে ডেটা পুনরুদ্ধার করলে পুরোনো টোকেন কাজ করা বন্ধ করে দেয়। এছাড়াও, পুরোনো টোকেনে বিজ্ঞপ্তি পাঠানোর চেষ্টা করলে Firebase UNREGISTERED স্ট্যাটাস ফেরত দেয়।
Firebase Cloud Messaging অ্যাপ প্রথমবার চালু হলে এবং getToken() মেথড কল করলে Registration Token জেনারেট করে। প্রক্রিয়াটিতে Google Play Services ক্রেডেনশিয়াল যাচাই এবং Firebase পরিকাঠামোতে অ্যাপ নিবন্ধন অন্তর্ভুক্ত রয়েছে।
যখন একটি ডিভাইস প্রথমবার সংহত FCM SDK সহ অ্যাপ চালায়, নিম্নলিখিত ঘটনাগুলি ঘটে। Firebase SDK ডিভাইসে Google Play Services-এর উপস্থিতি পরীক্ষা করে। তারপর SDK অ্যাপ্লিকেশন আইডি এবং ডিভাইস তথ্য পাঠিয়ে Firebase সার্ভারে একটি অনুরোধ পাঠায়। Firebase সার্ভার একটি নতুন টোকেন তৈরি করে এবং অ্যাপে ফেরত দেয়।
FCM দীর্ঘস্থায়ী সংযোগের উপর ভিত্তি করে একটি আর্কিটেকচার ব্যবহার করে। Registration Token পাওয়ার পর, ডিভাইস Android-এ STOMP প্রোটোকল বা iOS-এ APNs চ্যানেল-এর মাধ্যমে Firebase সার্ভারের সাথে একটি স্থায়ী সংযোগ স্থাপন করে। যখন সার্ভার টোকেনে একটি বিজ্ঞপ্তি পাঠায়, FCM টোকেন দ্বারা ডিভাইস খুঁজে বের করে এবং পেলোড সরবরাহ করে।
FCM দ্বারা নিম্নলিখিত ক্ষেত্রে Registration Token পুনর্জেনারেট করা যেতে পারে। নতুন ডিভাইসে ব্যাকআপ থেকে অ্যাপ পুনরুদ্ধার করার সময়। অ্যাপ মুছে ফেলা এবং পুনরায় ইনস্টল করার সময়। সিস্টেম সেটিংসের মাধ্যমে অ্যাপ ডেটা সাফ করার সময়। ডিভাইসে ভিন্ন Google অ্যাকাউন্টে সাইন ইন করার সময়। Firebase পরিবর্তন ট্র্যাক করতে সবসময় onNewToken কলব্যাক হ্যান্ডেল করার সুপারিশ করে।
Android-এ, Registration Token Firebase Messaging SDK-এর মাধ্যমে প্রাপ্ত হয়। প্রক্রিয়াটি SDK-এর বিভিন্ন সংস্করণের জন্য আলাদা — নতুন সংস্করণগুলি পুরোনো FirebaseInstanceId-এর পরিবর্তে FirebaseInstallations API ব্যবহার করে।
Firebase SDK সংস্করণ 21.0.0 থেকে শুরু করে, getToken() মেথড FirebaseMessaging-এর মাধ্যমে কল করা হয়। এই পদ্ধতি স্বয়ংক্রিয়ভাবে টোকেন জীবনচক্র পরিচালনা করে এবং এর আপডেটগুলিতে সাবস্ক্রাইব করে।
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendRegistrationToServer(token)
}
private fun sendRegistrationToServer(token: String) {
// সার্ভারে টোকেন পাঠানো
Log.d("FCM", "New token: $token")
}
init {
FirebaseMessaging.getInstance()
.getToken()
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "FCM টোকেন প্রাপ্তিতে ব্যর্থ")
return@addOnCompleteListener
}
val token = task.result
sendRegistrationToServer(token)
}
}
}
কিছু পরিস্থিতিতে, টোকেন সার্ভিসে নয় বরং সরাসরি Activity বা ViewModel-এ প্রয়োজন হয়। এর জন্য, অ্যাপ জীবনচক্রের সুবিধাজনক পয়েন্টে getToken() কল করা যেতে পারে। অ্যাসিঙ্ক্রোনিসিটি হ্যান্ডেল না করে মূল থ্রেড থেকে এই মেথড কল না করা গুরুত্বপূর্ণ।
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
getFCMToken()
}
private fun getFCMToken() {
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener { task ->
if (task.isSuccessful) {
val token = task.result
Log.d("FCM", "Token: $token")
}
}
}
}
Firebase SDK-এর পুরোনো সংস্করণে (সংস্করণ 20.x-এর আগে), টোকেন FirebaseInstanceId.getInstance().getToken()-এর মাধ্যমে প্রাপ্ত হত। এই মেথডটি ডিপ্রিকেটেড হিসেবে চিহ্নিত এবং নতুন প্রকল্পে ব্যবহারের জন্য সুপারিশ করা হয় না। লিগ্যাসি কোড রক্ষণাবেক্ষণকারী ডেভেলপারদের FirebaseInstallations API-তে মাইগ্রেট করা উচিত।
iOS-এ, Registration Token প্রাপ্তির প্রক্রিয়া আর্কিটেকচারগতভাবে আলাদা — FCM Apple Push Notification service (APNs)-এর মাধ্যমে কাজ করে। Firebase SDK APNs থেকে একটি অনন্য ডিভাইস টোকেন পায়, এটি FCM ফরম্যাটে রূপান্তর করে এবং অ্যাপে সরবরাহ করে।
iOS-এ FCM ব্যবহার করতে, Firebase কনসোলে একটি APNs সার্টিফিকেট বা কী কনফিগার করা প্রয়োজন। অ্যাপকে UNUserNotificationCenter-এর মাধ্যমে বিজ্ঞপ্তি অনুমতি অনুরোধ করতে হবে। APNs টোকেন পাওয়ার পর, Firebase SDK স্বয়ংক্রিয়ভাবে Registration Token জেনারেট করে।
import FirebaseMessaging
import UserNotifications
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
application: UIApplication,
didFinishLaunchingWithOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
Messaging.messaging().delegate = self
requestNotificationAuthorization()
return true
}
private func requestNotificationAuthorization() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound, .badge])
}
}
extension AppDelegate: MessagingDelegate {
func messaging(
messaging: Messaging,
didReceiveRegistrationToken fcmToken: String?
) {
Log.d("FCM", "Token: \(fcmToken ?? "")")
sendTokenToServer(token: fcmToken)
}
}
iOS-এ Registration Token Android টোকেনের তুলনায় আকারে ছোট, কারণ এটি APNs ডিভাইস টোকেন-এর উপর ভিত্তি করে তৈরি। Firebase SDK স্বয়ংক্রিয়ভাবে FCM টোকেন আপডেট করে যখন APNs টোকেন পরিবর্তিত হয়, যা ডিভাইস ব্যাকআপ থেকে পুনরুদ্ধার বা অ্যাপ পুনরায় ইনস্টল করার সময় ঘটে।
Registration Token-এর জীবনচক্র ব্যবস্থাপনা পুশ বিজ্ঞপ্তির নির্ভরযোগ্য সরবরাহের জন্য একটি গুরুত্বপূর্ণ কাজ। যদি সার্ভার একটি পুরোনো টোকেন সংরক্ষণ করে, বিজ্ঞপ্তিগুলি সরবরাহ করা হবে না এবং Firebase UNREGISTERED ত্রুটি ফেরত দেবে।
Firebase SDK টোকেন পরিবর্তন ট্র্যাক করার জন্য দুটি প্রক্রিয়া সরবরাহ করে। Android-এ, FirebaseMessagingService-এ onNewToken কলব্যাক ব্যবহার করা হয়। iOS-এ, messaging:didReceiveRegistrationToken ডেলিগেট ব্যবহার করা হয়। টোকেন আপডেট হলে উভয়ই কল করা হয়।
// SharedPreferences-এ টোকেন সংরক্ষণ এবং সার্ভারে পাঠানো
class TokenManager(private val context: Context) {
companion object {
private const val PREFS_TOKEN_KEY = "fcm_registration_token"
}
fun saveToken(token: String) {
val prefs = PreferenceManager
.getDefaultSharedPreferences(context)
prefs.edit().putString(PREFS_TOKEN_KEY, token).apply()
}
fun getSavedToken(): String? {
val prefs = PreferenceManager
.getDefaultSharedPreferences(context)
return prefs.getString(PREFS_TOKEN_KEY, null)
}
}
সার্ভারকে ব্যবহারকারী শনাক্তকারী-এর সাথে Registration Token সংরক্ষণ করতে হবে। টোকেন আপডেট হলে, ক্লায়েন্ট সার্ভারে নতুন টোকেন পাঠায় এবং সার্ভার পুরোনোটি প্রতিস্থাপন করে। টোকেন ইতিহাস রাখার সুপারিশ করা হয়: যদি নতুন টোকেনে বিজ্ঞপ্তি সরবরাহ না হয়, পুরোনোটি চেষ্টা করা যেতে পারে।
Firebase বিভিন্ন ক্ষেত্রে টোকেন প্রাপ্তিতে ত্রুটি ফেরত দিতে পারে। ডিভাইসে Google Play Services-এর অনুপস্থিতি — টোকেন প্রাপ্ত হবে না। FCM-তে অনুরোধ কোটা অতিক্রম করলে — পুনরায় চেষ্টায় এক্সপোনেনশিয়াল ব্যাকঅফ প্রয়োগ করা প্রয়োজন। টোকেনের মেয়াদ উত্তীর্ণ — SDK স্বয়ংক্রিয়ভাবে নতুন অনুরোধ করে।
| পরিস্থিতি | ফলাফল | ডেভেলপারের কর্ম |
|---|---|---|
| অ্যাপ মুছে ফেলা | টোকেন বাতিল | ডেটাবেস থেকে টোকেন মুছুন |
| ব্যাকআপ থেকে পুনরুদ্ধার | নতুন টোকেন | ডেটাবেসে আপডেট করুন |
| Google Play Services রিসেট | টোকেন পুনর্জেনারেট | onNewToken হ্যান্ডেল করুন |
| টোকেনের মেয়াদ শেষ | স্বয়ংক্রিয় আপডেট | আপডেটের সাবস্ক্রাইব করুন |
প্রায়শই জিজ্ঞাসিত প্রশ্ন
ডিভাইসে Google Play Services-এর উপস্থিতি পরীক্ষা করুন, google-services.json ফাইলের সঠিকতা এবং Firebase SDK সংস্করণ যাচাই করুন। নিশ্চিত করুন যে অ্যাপের ইন্টারনেট অনুমতি আছে।
টোকেন অ্যাপ আনইনস্টল এবং পুনরায় ইনস্টল করার সময়, ডেটা সাফ করার সময়, ব্যাকআপ থেকে পুনরুদ্ধার করার সময় বা ভিন্ন Google অ্যাকাউন্টে সাইন ইন করার সময় পরিবর্তিত হতে পারে। কোন নির্দিষ্ট সময় ব্যবধান নেই।
হ্যাঁ, ডিভাইসের প্রতিটি অ্যাপ তার নিজস্ব FCM টোকেন পায়। যদি একটি ডিভাইসে Firebase সহ তিনটি অ্যাপ থাকে, প্রতিটির নিজস্ব অনন্য Registration Token থাকবে।
Firebase কনসোল বা FCM HTTP API-এর মাধ্যমে একটি পরীক্ষামূলক বিজ্ঞপ্তি পাঠান। যদি টোকেন অবৈধ হয়, API UNREGISTERED বা NOT_FOUND ত্রুটি ফেরত দেবে।
Registration Token কোন গোপন কী নয়, কিন্তু এর ফাঁস ব্যবহারকারীর ডিভাইসে বিজ্ঞপ্তি পাঠাতে দেয়। টোকেনগুলি নিরাপদ ডেটাবেসে সংরক্ষণ করুন এবং ট্রান্সমিশনের জন্য HTTPS ব্যবহার করুন।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন