Registration Token adalah pengidentifikasi perangkat unik yang digunakan Firebase Cloud Messaging (FCM) untuk mengirimkan notifikasi push. Setiap aplikasi di setiap perangkat menerima token sendiri, tanpa pengiriman notifikasi tidak mungkin dilakukan. Menurut Firebase, 2025, Registration Token dihasilkan secara otomatis pada saat pertama kali aplikasi dijalankan dan dapat berubah dalam kondisi tertentu.
Poin Utama
Registration Token — string unik hingga 4096 karakter yang ditetapkan Firebase Cloud Messaging untuk setiap instance aplikasi. Token dibentuk berdasarkan pengidentifikasi aplikasi, perangkat, dan akun Google di perangkat.
Registration Token terdiri dari urutan karakter acak yang dikodekan dalam format Base64. FCM menggunakan token ini sebagai alamat pengiriman — bagian server mengirim notifikasi ke token, dan FCM merutekannya ke perangkat tertentu. Tanpa token, tidak mungkin mengarahkan notifikasi push ke pengguna tertentu.
Registration Token tidak boleh disamakan dengan Device ID (IMEI) atau Advertising ID. Device ID adalah pengidentifikasi perangkat keras, sedangkan Advertising ID digunakan untuk tujuan periklanan. Registration Token terikat pada kombinasi aplikasi dan perangkat, di mana satu perangkat dapat memiliki beberapa token untuk aplikasi yang berbeda.
| Pengidentifikasi | Tujuan | Perubahan |
|---|---|---|
| Registration Token | Pengiriman notifikasi push FCM | Dapat berubah |
| Device ID (IMEI) | Identifikasi perangkat | Permanen |
| Advertising ID | Iklan bertarget | Dapat direset |
| Instance ID | Mekanisme Firebase usang | Berubah saat dihapus |
FCM dapat menganggap Registration Token tidak valid dalam beberapa situasi. Jika aplikasi dihapus dari perangkat, token secara otomatis dibatalkan. Saat memulihkan data dari cadangan di perangkat baru, token lama berhenti berfungsi. Firebase mengembalikan status UNREGISTERED saat mencoba mengirim notifikasi ke token usang.
Firebase Cloud Messaging menghasilkan Registration Token saat pertama kali aplikasi dijalankan, ketika metode getToken() dipanggil. Prosesnya mencakup verifikasi kredensial Google Play Services dan pendaftaran aplikasi di infrastruktur Firebase.
Ketika perangkat pertama kali menjalankan aplikasi dengan FCM SDK terintegrasi, hal berikut terjadi. Firebase SDK memeriksa keberadaan Google Play Services di perangkat. Kemudian SDK mengirim permintaan ke server Firebase, meneruskan pengidentifikasi aplikasi dan informasi perangkat. Server Firebase membuat token baru dan mengembalikannya ke aplikasi.
FCM menggunakan arsitektur berdasarkan koneksi jangka panjang. Setelah menerima Registration Token, perangkat membuat koneksi permanen dengan server Firebase melalui protokol STOMP di Android atau saluran APNs di iOS. Ketika bagian server mengirim notifikasi ke token, FCM menemukan perangkat berdasarkan token dan mengirimkan payload.
Registration Token dapat diregenerasi oleh FCM dalam kasus berikut. Saat memulihkan aplikasi dari cadangan di perangkat baru. Saat menghapus dan menginstal ulang aplikasi. Saat membersihkan data aplikasi melalui pengaturan sistem. Saat masuk ke akun Google lain di perangkat. Firebase merekomendasikan untuk selalu memproses callback onNewToken untuk melacak perubahan.
Di Android, Registration Token diperoleh melalui Firebase Messaging SDK. Prosesnya berbeda untuk versi SDK yang berbeda — di versi baru, FirebaseInstallations API digunakan sebagai pengganti FirebaseInstanceId yang usang.
Mulai dari Firebase SDK versi 21.0.0, metode getToken() dipanggil melalui FirebaseMessaging. Pendekatan ini secara otomatis mengelola siklus hidup token dan berlangganan pembaruannya.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendRegistrationToServer(token)
}
private fun sendRegistrationToServer(token: String) {
// Mengirim token ke bagian server
Log.d("FCM", "New token: $token")
}
init {
FirebaseMessaging.getInstance()
.getToken()
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Gagal mengambil token FCM")
return@addOnCompleteListener
}
val token = task.result
sendRegistrationToServer(token)
}
}
}
Dalam beberapa skenario, token diperlukan bukan di layanan, tetapi langsung di Activity atau ViewModel. Untuk ini, getToken() dapat dipanggil di tempat yang sesuai dalam siklus hidup aplikasi. Penting untuk tidak memanggil metode ini dari thread utama tanpa menangani asinkronisitas.
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")
}
}
}
}
Di versi lama Firebase SDK (sebelum versi 20.x), token diperoleh melalui FirebaseInstanceId.getInstance().getToken(). Metode ini ditandai sebagai deprecated dan tidak direkomendasikan untuk proyek baru. Pengembang yang memelihara kode legacy harus migrasi ke FirebaseInstallations API.
Di iOS, proses mendapatkan Registration Token berbeda secara arsitektural — FCM bekerja melalui Apple Push Notification service (APNs). Firebase SDK menerima device token unik dari APNs, mengonversinya ke format FCM, dan meneruskannya ke aplikasi.
Untuk FCM bekerja di iOS, sertifikat atau kunci APNs harus dikonfigurasi di konsol Firebase. Aplikasi harus meminta izin notifikasi melalui UNUserNotificationCenter. Setelah menerima token APNs, Firebase SDK secara otomatis menghasilkan 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)
}
}
Registration Token di iOS memiliki ukuran lebih kecil dibandingkan token Android karena didasarkan pada APNs device token. Firebase SDK secara otomatis memperbarui token FCM saat token APNs berubah, yang terjadi saat memulihkan perangkat dari cadangan atau menginstal ulang aplikasi.
Mengelola siklus hidup Registration Token adalah tugas yang sangat penting untuk pengiriman notifikasi push yang stabil. Jika bagian server menyimpan token usang, notifikasi tidak akan terkirim, dan Firebase akan mengembalikan kesalahan UNREGISTERED.
Firebase SDK menyediakan dua mekanisme untuk melacak perubahan token. Di Android, callback onNewToken digunakan di FirebaseMessagingService. Di iOS — delegasi messaging:didReceiveRegistrationToken. Keduanya dipanggil pada setiap pembaruan token.
// Menyimpan token di SharedPreferences dan mengirim ke server
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)
}
}
Bagian server harus menyimpan Registration Token bersama dengan pengidentifikasi pengguna. Saat token diperbarui, klien mengirim token baru ke server, dan server mengganti yang lama. Disarankan untuk menyimpan riwayat token: jika notifikasi tidak terkirim ke token baru, token lama dapat dicoba.
Firebase dapat mengembalikan kesalahan pengambilan token dalam beberapa kasus. Tidak adanya Google Play Services di perangkat — token tidak akan diperoleh. Melebihi batas permintaan FCM — terapkan penundaan eksponensial pada percobaan ulang. Kedaluwarsa token — SDK secara otomatis meminta yang baru.
| Situasi | Hasil | Tindakan pengembang |
|---|---|---|
| Menghapus aplikasi | Token dibatalkan | Hapus token dari basis data |
| Memulihkan dari cadangan | Token baru | Perbarui di basis data |
| Mereset Google Play Services | Token diregenerasi | Proses onNewToken |
| Token kedaluwarsa | Pembaruan otomatis | Berlangganan pembaruan |
Pertanyaan yang Sering Diajukan
Periksa keberadaan Google Play Services di perangkat, kebenaran file google-services.json, dan versi Firebase SDK. Pastikan aplikasi memiliki izin akses internet.
Token dapat berubah saat menghapus dan menginstal ulang aplikasi, membersihkan data, memulihkan dari cadangan, atau masuk ke akun Google lain. Tidak ada interval waktu yang ketat.
Ya, setiap aplikasi di perangkat menerima token FCM sendiri. Jika ada tiga aplikasi dengan Firebase di perangkat, masing-masing akan memiliki Registration Token unik sendiri.
Kirim notifikasi uji melalui konsol Firebase atau FCM HTTP API. Jika token tidak valid, API akan mengembalikan kesalahan UNREGISTERED atau NOT_FOUND.
Registration Token bukan kunci rahasia, tetapi kebocorannya memungkinkan pengiriman notifikasi ke perangkat pengguna. Simpan token di basis data yang dilindungi dan gunakan HTTPS untuk transmisi.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga