Kode error REST untuk HTTP v1 API
Respons error HTTP untuk HTTP v1 API berisi kode error, pesan
error, dan status error. Respons error ini juga dapat berisi array details
dengan detail
selengkapnya tentang error tersebut.
Berikut adalah dua contoh respons error:
Contoh 1: Respons error dari permintaan API HTTP v1 dengan nilai yang tidak valid dalam pesan data
{
"error": {
"code": 400,
"message": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "message.data[0].value",
"description": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12"
}
]
}
]
}
}
Contoh 2: Respons error dari permintaan HTTP v1 API dengan token pendaftaran yang tidak valid
{
"error": {
"code": 400,
"message": "The registration token is not a valid FCM registration token",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
"errorCode": "INVALID_ARGUMENT"
}
]
}
}
Perhatikan bahwa kedua pesan memiliki kode dan status yang sama, tetapi array detail berisi nilai dalam jenis yang berbeda. Contoh pertama memiliki jenis
type.googleapis.com/google.rpc.BadRequest
yang menunjukkan error dalam nilai
permintaan. Contoh kedua dengan jenis
type.googleapis.com/google.firebase.fcm.v1.FcmError
memiliki error khusus FCM.
Untuk banyak error, array detail berisi informasi yang Anda perlukan untuk men-debug
dan menemukan resolusi.
Tabel berikut berisi kode error REST API FCM v1 beserta deskripsinya.
Kode Error | Deskripsi dan Langkah Penyelesaian |
---|---|
UNSPECIFIED_ERROR Tidak ada informasi lebih lanjut tentang error ini. |
Tidak ada. |
INVALID_ARGUMENT (Kode error HTTP = 400) Parameter permintaan tidak valid. Ekstensi jenis google.rpc.BadRequest ditampilkan untuk menentukan kolom mana yang tidak valid. |
Kemungkinan penyebabnya antara lain pendaftaran tidak valid, nama paket tidak valid, pesan terlalu besar, kunci data tidak valid, TTL tidak valid, atau parameter tidak valid lainnya. Pendaftaran tidak valid: Periksa format token pendaftaran yang Anda teruskan ke server. Pastikan token tersebut sama dengan token pendaftaran yang diterima aplikasi klien ketika mendaftar ke FCM. Jangan memotong token atau menambahkan karakter lain. Nama paket tidak valid: Pastikan pesan ditujukan ke token pendaftaran yang nama paketnya cocok dengan nilai yang diteruskan dalam permintaan. Pesan terlalu besar: Pastikan ukuran total data payload yang disertakan dalam pesan tidak melebihi batas FCM: 4.096 byte untuk sebagian besar pesan, atau 2.048 byte untuk pesan ke topik. Ini mencakup baik kunci maupun nilai. Kunci data tidak valid: Pastikan data payload tidak berisi kunci (seperti from, atau gcm, atau nilai apa pun yang diawali dengan google) yang digunakan secara internal oleh FCM. Perlu diperhatikan bahwa beberapa kata (seperti collapse_key) juga digunakan oleh FCM, tetapi diizinkan dalam payload. Dalam hal ini, nilai payload akan diganti oleh nilai FCM. TTL tidak valid: Pastikan nilai yang digunakan dalam ttl adalah bilangan bulat yang mewakili durasi dalam detik antara 0 dan 2.419.200 (4 minggu). Parameter tidak valid: Pastikan parameter yang diberikan memiliki nama dan jenis yang benar. |
UNREGISTERED (Kode error HTTP = 404) Instance aplikasi dibatalkan pendaftarannya dari FCM. Hal ini biasanya berarti token yang digunakan tidak lagi valid dan token baru harus digunakan. |
Error ini dapat disebabkan oleh token pendaftaran yang hilang, atau token yang tidak terdaftar. Pendaftaran Tidak Ada: Jika target pesan adalah nilai token , pastikan permintaan berisi token pendaftaran.Tidak terdaftar: Token pendaftaran yang ada dapat menjadi tidak valid dalam beberapa skenario, termasuk: - Jika aplikasi klien membatalkan pendaftaran di FCM. - Jika pendaftaran aplikasi klien dibatalkan secara otomatis, yang bisa terjadi jika pengguna meng-uninstal aplikasi. Misalnya, pada iOS, jika Layanan Masukan APN melaporkan token APN sebagai tidak valid. - Jika masa berlaku token pendaftaran habis (misalnya, Google mungkin memutuskan untuk memperbarui token pendaftaran, atau token APN sudah tidak berlaku untuk perangkat iOS). - Jika aplikasi klien diupdate tetapi versi yang baru belum dikonfigurasi untuk menerima pesan. Untuk semua kasus tersebut, hapus token pendaftaran dari server aplikasi dan jangan gunakan lagi untuk mengirim pesan. |
SENDER_ID_MISMATCH (kode error HTTP = 403) ID pengirim yang diautentikasi berbeda dengan ID pengirim untuk token pendaftaran. |
Token pendaftaran terikat pada grup pengirim tertentu. Ketika aplikasi klien mendaftar ke FCM, aplikasi tersebut harus menetapkan pengirim mana saja yang diizinkan untuk mengirim pesan. Anda harus menggunakan salah satu ID pengirim tersebut saat mengirim pesan ke aplikasi klien. Jika Anda beralih ke pengirim yang berbeda, token pendaftaran yang ada tidak akan berfungsi. |
QUOTA_EXCEEDED (kode error HTTP = 429) Batas pengiriman untuk target pesan terlampaui. Ekstensi jenis google.rpc.QuotaFailure ditampilkan untuk menentukan kuota yang terlampaui. |
Error ini dapat disebabkan oleh kuota kapasitas pesan yang terlampaui, kuota kapasitas pesan perangkat terlampaui, atau kuota kapasitas pesan topik terlampaui. Kapasitas pesan terlampaui: Rasio pengiriman pesan terlalu tinggi. Anda harus mengurangi keseluruhan frekuensi pengiriman pesan. Gunakan backoff eksponensial dengan penundaan awal minimum 1 menit untuk mencoba kembali pesan yang ditolak. Kapasitas pesan perangkat terlampaui: Tingkat pengiriman pesan ke perangkat tertentu terlalu tinggi. Lihat batas kapasitas pesan untuk satu perangkat. Kurangi jumlah pesan yang dikirim ke perangkat ini dan gunakan backoff eksponensial untuk mencoba mengirimkan pesan lagi. Kapasitas pesan topik terlampaui: Tingkat pengiriman pesan ke pelanggan topik tertentu terlalu tinggi. Kurangi jumlah pesan yang dikirim untuk topik ini dan gunakan backoff eksponensial dengan penundaan awal minimum 1 menit untuk mencoba mengirimkan pesan lagi. |
UNAVAILABLE (kode error HTTP = 503) Server kelebihan beban. |
Server tidak bisa memproses permintaan secara tepat waktu. Coba lagi permintaan yang sama, tetapi Anda harus: - Mematuhi header Retry-After jika disertakan dalam respons dari Server Koneksi FCM. - Menerapkan backoff eksponensial dalam mekanisme percobaan ulang. (misalnya jika Anda menunggu satu detik sebelum percobaan ulang pertama, tunggu setidaknya dua detik sebelum percobaan berikutnya, lalu 4 detik, dan seterusnya). Jika Anda mengirim beberapa pesan, pertimbangkan untuk menerapkan jitter. Untuk informasi selengkapnya, lihat Menangani percobaan ulang, atau periksa dasbor status FCM untuk mengidentifikasi apakah ada gangguan layanan yang sedang berlangsung yang memengaruhi FCM. Pengirim yang menyebabkan masalah berisiko dimasukkan ke daftar tolak. |
INTERNAL (Kode error HTTP = 500) Terjadi error internal yang tidak diketahui. |
Server mengalami error ketika mencoba memproses permintaan. Anda dapat mencoba lagi permintaan yang sama dengan mengikuti saran di Menangani percobaan ulang atau memeriksa dasbor status FCM. untuk mengidentifikasi apakah ada gangguan layanan yang sedang berlangsung yang memengaruhi FCM. Jika error tetap berlanjut, hubungi dukungan Firebase. |
THIRD_PARTY_AUTH_ERROR (Kode error HTTP = 401) Sertifikat APN atau kunci autentikasi push web tidak valid atau tidak ada. |
Pesan yang ditargetkan ke perangkat iOS atau pendaftaran web push tidak dapat dikirim. Periksa validitas kredensial pengembangan dan produksi Anda. |
Kode error Admin SDK
Tabel berikut berisi kode error Firebase Admin FCM API beserta deskripsinya, termasuk langkah-langkah penyelesaian yang direkomendasikan.
Kode Error | Deskripsi dan Langkah Penyelesaian |
---|---|
messaging/invalid-argument |
Argumen yang tidak valid diberikan ke metode FCM. Di dalam pesan error akan ada informasi tambahan. |
messaging/invalid-recipient |
Penerima pesan yang dimaksud tidak valid. Di dalam pesan error akan ada informasi tambahan. |
messaging/invalid-payload |
Diberikan objek payload pesan yang tidak valid. Di dalam pesan error akan ada informasi tambahan. |
messaging/invalid-data-payload-key |
Payload pesan data berisi kunci yang tidak valid. Baca dokumentasi referensi DataMessagePayload untuk kunci yang dibatasi.
|
messaging/payload-size-limit-exceeded |
Payload pesan yang diberikan melebihi batas ukuran FCM. Batasnya adalah 4.096 byte untuk kebanyakan pesan. Untuk pesan yang dikirim ke topik, batasnya adalah 2.048 byte. Ukuran total payload mencakup kunci sekaligus nilai. |
messaging/invalid-options |
Diberikan objek opsi pesan yang tidak valid. Di dalam pesan error akan ada informasi tambahan. |
messaging/invalid-registration-token |
Diberikan token pendaftaran yang tidak valid. Pastikan token tersebut sama dengan token pendaftaran yang diterima aplikasi klien ketika mendaftar ke FCM. Jangan memotong atau menambahkan karakter lain ke token. |
messaging/registration-token-not-registered |
Token pendaftaran yang diberikan tidak terdaftar. Token pendaftaran yang sebelumnya valid dapat dibatalkan pendaftarannya karena berbagai alasan, termasuk:
|
messaging/invalid-package-name |
Pesan ditujukan ke token pendaftaran yang nama paketnya tidak cocok dengan opsi restrictedPackageName yang disediakan.
|
messaging/message-rate-exceeded |
Tingkat pengiriman pesan ke target tertentu terlalu tinggi. Kurangi jumlah pesan yang dikirim ke perangkat atau topik ini, dan jangan langsung mencoba mengirimkan pesan lagi ke target ini. |
messaging/device-message-rate-exceeded |
Tingkat pengiriman pesan ke perangkat tertentu terlalu tinggi. Kurangi jumlah pesan yang dikirim ke perangkat ini dan jangan langsung mencoba mengirimkan pesan lagi ke perangkat ini. |
messaging/topics-message-rate-exceeded |
Tingkat pengiriman pesan ke pelanggan topik tertentu terlalu tinggi. Kurangi jumlah pesan yang dikirim ke topik tersebut, dan jangan langsung mencoba mengirimkan pesan lagi ke topik tersebut. |
messaging/too-many-topics |
Token pendaftaran telah berlangganan jumlah maksimum topik sehingga tidak dapat lagi berlangganan topik lainnya. |
messaging/invalid-apns-credentials |
Pesan yang ditargetkan ke perangkat Apple tidak dapat dikirim karena sertifikat SSL APNs yang diperlukan tidak diupload atau tidak berlaku lagi. Periksa validitas sertifikat pengembangan dan produksi Anda. |
messaging/mismatched-credential |
Kredensial yang digunakan untuk mengautentikasi SDK ini tidak memiliki izin untuk mengirim pesan ke perangkat yang terkait dengan token pendaftaran yang diberikan. Pastikan kredensial dan token pendaftaran tercakup dalam project Firebase yang sama. Lihat Menambahkan Firebase ke aplikasi Anda untuk mengetahui cara mengautentikasi Firebase Admin SDK. |
messaging/authentication-error |
SDK tidak dapat melakukan autentikasi ke server FCM. Pastikan Anda mengautentikasi Firebase Admin SDK dengan kredensial yang memiliki izin untuk mengirim pesan FCM. Lihat Menambahkan Firebase ke aplikasi Anda untuk mengetahui cara mengautentikasi Firebase Admin SDK. |
messaging/server-unavailable |
Server FCM tidak dapat memproses permintaan secara tepat waktu. Coba lagi permintaan yang sama, tetapi Anda harus:
|
messaging/internal-error |
Server FCM mengalami error ketika mencoba memproses permintaan. Anda bisa mencoba lagi permintaan yang sama sesuai persyaratan yang tercantum pada baris messaging/server-unavailable sebelumnya. Jika error tetap berlanjut, harap laporkan masalah ke saluran dukungan Laporan Bug kami.
|
messaging/unknown-error |
Ditampilkan error server yang tidak diketahui. Lihat respons server mentah pada pesan error untuk lebih jelasnya. Jika Anda menerima error ini, harap laporkan pesan error lengkap ke saluran dukungan Laporan Bug kami. |